课堂讲解内容提问:关于不使用var关键字声明或者定义变量,会添加在window全局对象上的问题

课堂讲解内容提问:关于不使用var关键字声明或者定义变量,会添加在window全局对象上的问题

通过代码验证,我发现,不管用不用var声明或定义变量,都是会添加在window对象上。老师,请看下面的代码结果:

//  使用var 声明的变量
var age=14;
console.log(window.age===age);//true

// 不使用 var 声明的变量
name="jk";
console.log(window.name===name);//true

//  function 声明的函数
function tall(){};
console.log(window.tall===tall)//true

还请老师指教,是我的检验方法有问题,还是就是这样的:声明定义的变量都会挂在window全局对象上,作为其属性和方法

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
好帮手慕夭夭 2019-07-22 09:53:10

你好同学,你的理解是对的,局部作用域 和 块级作用域不是一个概念。不过它们两个是没有关系的,不会产生交集。因为局部作用域是JavaScript(可以说是es5)中的概念,而块级作用域是目前同学学习的es6中的概念。

祝学习愉快,望采纳。

好帮手慕夭夭 2019-07-21 19:28:08

你好同学,你的理解是对的。在JavaScript中,全局变量等价于window上的属性,即使用window可以访问全局变量。使用var声明变量的和不使用var声明变量的区别在于是不是在局部作用域中声明,参考如下理解:

http://img1.sycdn.imooc.com//climg/5d344bb900016e0606100174.jpg

那要看全局对象是啥,例如node.js中,就是把全局变量依附在 global 对象上。global 对象和 Window 对象相似。了解一下即可。

祝学习愉快,望采纳。

  • 提问者 独孤韧 #1
    嗯嗯,了解了,谢谢老师。 老师,还有个问题,局部作用域 和 块级作用域 是一个概念吗?我感觉不是,在块级作用域中,使用var声明的变量,外面还是可以访问到,比如if(){};而在函数的{}作用域中,外面却访问不到,可见老师说的局部作用域好像不等于块级作用域。不知二者的是怎样的关系,还请老师示下。
    2019-07-21 20:50:11
提问者 独孤韧 2019-07-21 14:36:59

还有,就是如果不是浏览器,没有window对象,创建的变量会挂在什么上面?要怎么查看?

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师