调用没有参数的jQuery的ajaxSetup会有任何副作用吗?

时间:2016-09-07 18:18:23

标签: javascript jquery ajax

我已经阅读了描述如何读取jQuery ajax设置值的答案herehere。不过,我的问题是:

如果我之前使用ajaxSetup之类的设置调用$.ajaxSetup({cache: true})函数,然后调用$.ajaxSetup()(没有参数),这个调用是否有任何副作用?

或者更直接地,除了返回包含ajax设置的普通对象之外,调用$.ajaxSetup()没有参数做任何事情

我上面引用的答案都是以这种方式调用ajaxSetup以便读取设置的值,而我无法在jQuery文档中找到任何正式答案来指示调用{{ 1}}没有参数,可能是因为它的使用非常气馁。

在我的浏览器中,我通过加载jQuery运行一个简单的测试,运行ajaxSetup后跟$.ajaxSetup({async: false});,发现async的值仍然没有改变(默认值为true,所以如果调用$.ajaxSetup();将设置重置为默认值,然后应该更改async的值),但这可能不足以证明在以这种方式调用函数时不会发生副作用。

1 个答案:

答案 0 :(得分:1)

  

调用没有参数的$ .ajaxSetup()除了返回包含ajax设置的普通对象之外还会做什么吗?

没有

示例



/forest

// set a new custom url
$.ajaxSetup({
  url: 'CHANGED'
});

// call it again with no params
$.ajaxSetup();

// the url is still the custom url
console.log('url: ' + $.ajaxSetup().url);




<强>为什么吗

如果我们查看code for ajaxSetup,我们会看到,当使用单个参数调用时,它会返回调用:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

其中ajaxExtend( jQuery.ajaxSettings, target ); 是您传递给target的单个参数。

现在,在ajaxExtend内,我们可以看到它尝试使用ajaxSetup()循环遍历同一个参数。

相关代码:

for in

由于你没有通过任何东西,基本上你正在做

function ajaxExtend( target, src ) {

    for (var key in src) {
      // here is where target, which in this case is jQuery.ajaxSettings, gets overriden
    }

    return target;
}

从不进入function ajaxExtend( target, src ) { for (var key in undefined) { // this is never reached } return target; } 循环并返回for in的当前值。