全局对象和赋值-为什么它能识别赋值
Global Object and assignment - why does it recognize the assignment?
当我在控制台中运行时,我不太明白为什么它产生零结果。我认为MyObject和myfunction都是全局的。为了正确理解这个问题,我遗漏了什么概念?
myObject = {
length: 400,
};
function myFunc () {
return console.log(this.length);
}
myFunc(myObject.length); // equals zero
它显示了window.length
的值(这是文档中的帧/iframe的数量)。要让myFunc
显示您传递给它的对象的length
的值,您必须使用该参数:
function myFunc (obj) {
return console.log(obj.length);
}
如果你试图探索隐式全局变量(你的myObject
是一个隐式全局变量;它们是一件坏事(tm)),那么myFunc
应该不带参数调用,应该使用myObject.length
或this.myObject.length
(结果相同)。
您将对象作为参数传递,但您没有在函数中接收它。myFunc
上下文中的this
不是对象myObject
。它是window
对象。
要达到你想要做的,修改你的代码,像这样:
myObject = {
length: 400,
};
function myFunc (obj) {
return console.log(obj.length);
}
myFunc(myObject); // equals zero
注意:
要验证this
是window
对象,请参阅我将控制台行修改为return console.log(this);
的地方。控制台输出Window
对象。
示范小提琴
相关文章:
- Javascript变量赋值|
- 无法为打字稿字典赋值
- Javascript-根据赋值顺序,按键合并对象数组
- Javascript:应为赋值或函数调用,但实际看到的却是表达式
- 如何通过json对象数组为嵌套对象赋值
- 赋值后的回调函数
- ||(OR)运算符如何在赋值中工作
- 可以使用属性赋值实现多个函数
- 将ECMAScript 6析构函数赋值(ES2015)重构为旧版本的javascript
- 如何在javascript中为全局变量赋值
- Javascript:JSHint:应为赋值或函数调用,但实际看到的却是表达式
- JavaScript:在嵌套循环中为数组赋值
- 未设置变量的赋值| jQuery的作用是什么
- Javascript赋值运算符的奇怪行为
- onchange赋值的Javascript位置
- 我可以在javascript中的回调函数中为变量赋值吗
- 逻辑(JSint友好)等效于while循环中的此赋值
- 为数组元素的属性赋值将设置所有其他类似元素的属性
- 为什么jshint不能将赋值识别为表达式
- 全局对象和赋值-为什么它能识别赋值