• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

javascript – 请问这段js代码的变量对象是什么?

php 搞代码 3年前 (2022-01-23) 19次浏览 已收录 0个评论
文章目录[隐藏]

javascript – 请问这段js代码的变量对象是什么?

alert(x); //"x" is not definedalert(b); //"undefinedx = 10;var y = 20;

x是否成为了window的一个属性而非变量?y是变量对象吗?

因为我看到了这么一段话

在《Javascript高级程序设计》4.2.2一节当中有这么一句话:“如果初始化变量时没有使用var声明,该变量会自动被添加到全局环境中。”
首先,我们应该先明确一点,使用var关键字是声明变量的唯一方式。如果没有var 的话,例如 a = 5 ,a就将作为全局对象的一个属性,而不是一个变量。

区别如下:

alert(x); //"x" is not defined alert(b); //"undefinedx = 10; var y = 20;

进入上下文后第一阶段:

VO = {   x:10; }

VO 中并没有y的原因是,y 并不是变量。

请问他说的对吗?

回复内容:

alert(x); //"x" is not definedalert(b); //"undefinedx = 10;var y = 20;

x是否成为了window的一个属性而非变量?
y是变量对象吗?

因为我看到了这么一段话

在《Javascript高级程序设计》4.2.2一节当中有这么一句话:“如果初始化变量时没有使用var声明,该变量会自动被添加到全局环境中。”
首先,我们应该6本文来源gao@dai!ma.com搞$代^码!网7

搞gaodaima代码

先明确一点,使用var关键字是声明变量的唯一方式。如果没有var 的话,例如 a = 5 ,a就将作为全局对象的一个属性,而不是一个变量。

区别如下:

alert(x); //"x" is not defined alert(b); //"undefinedx = 10; var y = 20;

进入上下文后第一阶段:

VO = {   x:10; }

VO 中并没有y的原因是,y 并不是变量。

请问他说的对吗?

直接在下面输出一下有没有不就得了。。。这时候的window是上下文执行环境吧?

肯定不是啊,变量对象(variable object) 是与执行上下文相关的 数据作用域(scope of data) 。
它是与上下文关联的特殊对象,用于存储被定义在上下文中的 变量(variables) 和 函数声明(function declarations) 。你声明、不声明的变量都是变量。
http://www.nowamagic.net/libr…

其实完全没必要去纠结于变量和属性。

alert(x)会报错就是因为x没有使用var声明,不会被前置到变量对象中,当执行x=10的时候才会去给全局对象上添加一个x属性。

在浏览器中,定义在全局作用域中的都是window的属性。在这里x与y既是变量,同时又是window的属性,window.x与window.y都能访问到

含义:
变量声明是必须通过 var 语句来完成的,未通过var 语句声明的全局变量是window对象的属性。

区别:
delete操作符是用来删除对象属性的。
通过var声明的变量和通过function声明的函数拥有DontDelete特性,是不能被删除。
未通过var声明的全局变量(全局对象的属性)可以被删除

以上就是javascript – 请问这段js代码的变量对象是什么?的内容,更多相关内容请关注搞代码(www.gaodaima.com)!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:javascript – 请问这段js代码的变量对象是什么?

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址