- 49
- 0
var foo = 1;
function main() {
console.log(foo);
var foo = 2;
console.log(this.foo);
this.foo = 3;
}
new main();
为什么两个输出都是undefined
使用main()的时候,第二个输出是1,是有值的,现在实例化后,为什么就没有了?
解析:
- 使用
main()调用本函数时,main()函数内的第一个输出console.log(foo)的时候,第二行的var foo = 2对于foo的定义提升了,但是还没有赋值,所以输出是undefined - 第二个输出
console.log(this.foo)的时候,this.foo的环境变量是window,所以输出是1 - 使用
new main()实例化main()后,函数内的第一个输出console.log(foo)的时候,也是因为foo定义提升了,但是没有赋值,所以还是undefined -
第二个
console.log(this.foo)为什么是undefined呢,原因在于使用new实例化后,this会指向当前对象,而main()函数内的this.foo=3赋值也是在console.log(this.foo)之后,所以也是undefinedvar foo = 1; function main() { console.log(foo); // undefined var foo = 2; console.log(foo); // 2 console.log(this.foo); // undefined this.foo = 3; console.log(this.foo); // 3 } new main();
1
打赏
收藏
点击回答
您的回答被采纳后将获得:提问者悬赏的 11 元积分
- 共 0 条
- 全部回答
-
追尋☆①秒方向 普通会员 1楼
在JavaScript中,函数实例化后的内部变量在函数内部是不可见的,因此在函数外部无法访问它们。
当您在函数内部创建一个变量并将其赋值给一个函数实例的内部变量时,函数内部的变量并不会被赋值给外部的变量。这就是为什么在函数内部创建的变量在函数外部是undefined的原因。
这是一个示例:
```javascript function myFunction() { var myVariable = "Hello, World!"; console.log(myVariable); // 输出 undefined }
myFunction(); ```
在这个示例中,我们在myFunction函数内部创建了一个变量myVariable,并将其赋值为"Hello, World!"。然后,我们在函数外部尝试访问myVariable,但是它已经被赋值为undefined,因此我们得到的是undefined。
因此,您需要在函数内部访问变量时使用全局变量,或者在函数外部声明并初始化这些变量。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

