jquery $.each 函数 console.log(this) ,打印结果是字符串,如 "a" 'b' 'c'

Posted

技术标签:

【中文标题】jquery $.each 函数 console.log(this) ,打印结果是字符串,如 "a" \'b\' \'c\'【英文标题】:The jquery $.each function console.log(this) ,prints result is string like "a" 'b' 'c'jquery $.each 函数 console.log(this) ,打印结果是字符串,如 "a" 'b' 'c' 【发布时间】:2017-11-08 06:45:18 【问题描述】:
var arr=["aaa","bbb","cccc"];
$.each(arr,function(a,b)
    console.log(this);
)

结果在 Chrome 控制台中如下:

Chrome 控制台

我认为结果是 "aaa" "bbb","cccc",为什么结果是 "a" "a" "a" 'b''b''b'....

【问题讨论】:

只有aaa,bbb,cccc(你可以做这个警报)。 chrome 有不同的显示字符串的方式。有额外的信息 使用console.log(b);它将打印 aaa bbb cccc 谢谢大家。 【参考方案1】:

尝试更改为:

var arr=["aaa","bbb","cccc"];
$.each(arr,function(a,b)
    console.log(b);
)

【讨论】:

谢谢,我知道'console.log(b)' 可以得到预期的结果。我不明白“this”。再次感谢您的帮助。【参考方案2】:

原因是在您的 each 循环内,this 的作用域不适用于当前正在迭代的元素。

JQuery.each(), 您用作a 的变量是迭代索引 您用作b 的变量是当前的迭代元素。

如果要记录当前的迭代元素,请使用b 而不是this

$.each(arr,function(a,b)
    console.log(b);
                ▲
)

【讨论】:

【参考方案3】:

您提供的图片中的结果是正确的。控制台只显示字符串的单个字符及其长度信息,但如果查看实际值(原始值),它确实显示了“aaa”、“bbb”和“cccc”。

【讨论】:

【参考方案4】:
var arr=["aaa","bbb","cccc"];

console.log(new String(arr[0]));
console.log(new String(arr[1]));
console.log(new String(arr[2]));

当你使用 jQuery.each 循环“arr”时,回调 while 绑定到 new String(arr[i])

$.each(arr,function(a,b)
    console.log(new String(b));
    console.log(this);
)

参数“b”是您的预期结果

【讨论】:

以上是关于jquery $.each 函数 console.log(this) ,打印结果是字符串,如 "a" 'b' 'c'的主要内容,如果未能解决你的问题,请参考以下文章

jQuery通用遍历方法each的实现

Jquery选择器.each()选择文档[重复]

JQuery中$.each 和$(selector).each()的区别详解

jQuery.each 实现不同于原生 Array.forEach

js的forEach,jquery的each,for

jQuery 源码解析 $.each和$.map的区别