JavaScript:意外类型的结果

前端之家收集整理的这篇文章主要介绍了JavaScript:意外类型的结果前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个数组迭代器函数
function applyCall(arr,fn) {
  fn.call(arr[0],arr[0]);
}

和一些代码

var arr1 = ['blah'];
applyCall(arr1,function (i,val) {
  alert(typeof this); // object    WHY??
  alert(typeof val); // string
  alert(typeof(this === val)) // alerts false,expecting true
});

为什么在内联函数对象中使用typeof而不是string?

jsfiddle here

解决方法

在JavaScript中调用方法时,它会在内部将其设置为调用对象: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/apply

…and primitive values will be Boxed.

通过“盒装”,它们意味着基元包裹在对象中.请注意,这仅适用于应用/调用的第一个参数.其他参数变为不是“盒装”的函数参数.

原文链接:https://www.f2er.com/js/240890.html

猜你在找的JavaScript相关文章