jQuery:在 $.each 中从字符串类型转换为字符串对象
jQuery: conversion from string type to string object in $.each
$.each(["foo","bar"],function(){console.debug(this);});
将字符串类型的"foo"和"bar"转换为字符串对象中的等效项。
而。。。
$.each(["foo","bar"],function(i,e){console.debug(e);});
将"foo"和"bar"保留其原始字符串类型。
我想知道为什么 $.each 要进行转换? 而且,更重要的是...这种转换是否永远不会发生 - 保持字符串不变,无论它们是字符串类型还是字符串对象?
根据 jQuery 文档:
(也可以通过 this 关键字访问该值,但是 Javascript 将始终将此值包装为对象,即使它是 一个简单的字符串或数字值。
这表明是Javascript,而不是jQuery在进行转换。
在回调函数中使用值的情况下,jQuery 会传递该值本身,因此它可以保留其类型。
jQuery不应该受到责备:这是JavaScript的一个怪癖。正如 ECMAScript 第三版 10.4.3 节中所定义的,当你调用一个函数时,this
伪参数纵:值得注意的是,一个 null 值被转换为全局对象 ( window
),基元值被自动装箱:
3) 否则,如果 Type(thisArg) 不是 Object,则将 ThisBinding 设置为 ToObject(thisArg)。
参数不会以相同的方式被破坏,这就是为什么 each() 的第二个参数更可靠。
JavaScript 这样做没有特别的理由,这只是 Netscape 当年所做的疯狂事情之一,然后必须在 ECMAScript 中标准化。在第五版的严格模式中,这种奇怪的行为消失了。
相关文章:
- 将GET请求(HTML字符串)转换为完整的DOM对象
- 将时间字符串值转换为时间javascript
- 将字符串动态转换为布尔值
- 如何在 java 脚本中将字符串日期转换为 GMT
- 如何将 UTC 日期时间(字符串)转换为访问者时区
- 为什么字符串类型返回功能
- json字符串未转换为对象
- 布尔类型转换系统(Java)
- 正在将字符串变量转换为数组
- 为什么从字符串到整数的类型转换总是返回“”;0〃;
- Babel React 转换:属性值预期的字符串类型,但得到空
- 无法将 jquery 对象转换为字符串类型并将其传递给 asp 代码隐藏
- jQuery:在 $.each 中从字符串类型转换为字符串对象
- Javascript:字符串可以转换为类型常量吗?
- 在Javascript中添加和减去字符串和数字-自动类型转换
- 使用==比较整数和字符串时,JavaScript中的隐式数据类型转换
- Javascript:避免使用null或未定义变量进行字符串到整数或浮点类型转换的异常
- 如何将Integer转换为float而不改变javascript中的字符串类型
- 将num或布尔类型json对象从字符串类型转换为其原始类型
- 如何将布尔型和数字型Json的键值转换为字符串类型