javascript函数参数问题

iyourplus
  • 104
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'
});
回复
阅读 2.6k
4 个回答
✓ 已被采纳

第一个,JavaScript是不能这么用的。你可以这样:

jstestabc(null, 'b');

对于$.ajax(),它是jQuery提供的一个方法,$指jQuery,而ajax是它提供的一个方法,这相当于往ajax()方法传了个参数。

如果你想要和$.ajax()这样传参数,你需要这样做:

jsfunction 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'});

JS不能这么用吗?

  • 不能

类似$.ajax这种用法是如何实现的呢?

  • $.ajax的参数是一个object对象,注意括号里面的大括号。

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的坐标,才能对应到相应的变量。

b="b" 返回 “b” 且会创建一个全局变量b ,你这样相当于 b= ‘b’ ;testabc('b'); 你的具体需求没说明白。。

你知道吗?

宣传栏