Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery:从字符串类型到字符串对象的转换,单位为$_Javascript_Jquery - Fatal编程技术网

Javascript jQuery:从字符串类型到字符串对象的转换,单位为$

Javascript jQuery:从字符串类型到字符串对象的转换,单位为$,javascript,jquery,Javascript,Jquery,将字符串类型的“foo”和“bar”转换为字符串对象中的等效项 鉴于 $.each(["foo","bar"],function(){console.debug(this);}); 将保留“foo”和“bar”的原始字符串类型 我想知道为什么$。每个都进行转换?更重要的是。。。如果此转换从未发生-保留字符串的原样,无论它们是字符串类型还是字符串对象?根据: (也可以通过this关键字访问该值,但是 Javascript将始终将该值包装为对象,即使它是 一个简单的字符串或数值。) 这表明进行转换

将字符串类型的“foo”和“bar”转换为字符串对象中的等效项

鉴于

$.each(["foo","bar"],function(){console.debug(this);});
将保留“foo”和“bar”的原始字符串类型

我想知道为什么$。每个都进行转换?更重要的是。。。如果此转换从未发生-保留字符串的原样,无论它们是字符串类型还是字符串对象?

根据:

(也可以通过this关键字访问该值,但是 Javascript将始终将该值包装为对象,即使它是 一个简单的字符串或数值。)

这表明进行转换的是Javascript,而不是jQuery


在回调函数中使用该值的情况下,jQuery传递该值本身,因此可以保留其类型。

jQuery在这里不是罪魁祸首:这是JavaScript的一个怪癖。如ECMAScript第三版第10.4.3节所定义,调用函数时,将操纵
伪参数:值得注意的是,将空值转换为全局对象(
窗口
),并自动装箱原始值:

3) 否则,如果类型(thisArg)不是对象,请将ThisBinding设置为ToObject(thisArg)

参数不会以同样的方式损坏,这就是为什么each()的第二个参数更可靠的原因


JavaScript这样做没有什么特别的理由,它只是Netscape当年做的一件疯狂的事情,然后必须在ECMAScript中进行标准化。在第五版的严格模式下,这种奇怪的行为消失了。

我相信引起这种情况的javascript行为是AutoBox原语。
$.each(["foo","bar"],function(i,e){console.debug(e);});