function testabc(a, b, c) {
a = typeof a !== 'undefined' ? a : '1';
b = typeof b !== 'undefined' ? b : '2';
c = typeof c !== 'undefined' ? c : '3';
alert(b);
}
testabc(b='b');
JS不能这么用吗?类似$.ajax这种用法是如何实现的呢?
$.ajax({
url: 'xxx'
});
b="b" 返回 “b” 且会创建一个全局变量b ,你这样相当于 b= ‘b’ ;testabc('b'); 你的具体需求没说明白。。
JS函数的参数其实是在一个argument变量里面,所以其实函数是这样的
function testabc(){
var a = arguments[0],
b = arguments[1],
c = arguments[2];
a = typeof a !== 'undefined' ? a : '1';
b = typeof b !== 'undefined' ? b : '2';
c = typeof c !== 'undefined' ? c : '3';
alert(b);
}
testabc(undefined, b='b', undefined); //你需要手动的占位arguments的坐标,才能对应到相应的变量。
JS不能这么用吗?
- 不能
类似$.ajax这种用法是如何实现的呢?
- $.ajax的参数是一个object对象,注意括号里面的大括号。
第一个,JavaScript是不能这么用的。你可以这样:
js
testabc(null, 'b');
对于$.ajax()
,它是jQuery提供的一个方法,$
指jQuery,而ajax
是它提供的一个方法,这相当于往ajax()
方法传了个参数。
如果你想要和$.ajax()
这样传参数,你需要这样做:
js
function testabc(arg) { var a = typeof arg['a'] !== 'undefined' ? arg['a'] : '1'; var b = typeof arg['b'] !== 'undefined' ? arg['b'] : '2'; var c = typeof arg['c'] !== 'undefined' ? arg['c'] : '3'; console.log(b); } testabc({b: 'b'});