原生js面试题:作用域和作用域链,let声明的全局变量不是window对象的属性 JavaScript从入门到精通专栏收录该内容146 篇文章28 订阅订阅专栏 这篇博文是我在心情不好的情况下写的。 一、作用域作用域,就是变量起作用的区域(范围)。或者说,js代码执行时,查找变量的范围 ...
在ES 中,顶层对象的属性和全局变量是等价的,var 命令和 function 命令声明的全局变量,自然也是顶层对象。 但ES 规定,var 命令和 function 命令声明的全局变量,依旧是顶层对象的属性,但 let命令 const命令 class命令声明的全局变量,不属于顶层对象的属性。 在哪里 怎么获取 通过在设置断点,看看浏览器是怎么处理的: 通过上图也可以看到,在全局作用域中,用 le ...
2019-07-18 15:39 0 890 推荐指数:
原生js面试题:作用域和作用域链,let声明的全局变量不是window对象的属性 JavaScript从入门到精通专栏收录该内容146 篇文章28 订阅订阅专栏 这篇博文是我在心情不好的情况下写的。 一、作用域作用域,就是变量起作用的区域(范围)。或者说,js代码执行时,查找变量的范围 ...
总结:在全局定义变量时(包括定义函数),var所定义的变量(以及function定义的函数)具有全局作用域,所以定义完毕以后就会添加入全局对象(在浏览器中即window全局对象)。window全局对象中的变量,可以通过window.xxx来访问到。由于const let定义的变量是块级 ...
先来看一道题 let id = 2; let json = { id: 1, show:function(){ setTimeout(function(){ console.log(this.id); },2000 ...
没有自己的this。 我又想了一下,变量arr调用方法removeFirPos(),那么这个this不就是指向了arr吗,后来一 ...
let和var声明变量的区别:1.let所声明的变量只在let命令所在的代码块内有效。(块级作用域) 另外,for循环还有一个特别之处,就是设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的子作用域。 2.let命令不存在变量 ...
1、const (1)给常量赋值并输出 测试: 可以正常输出 (2)修改 (3)不赋值 const可以保证数据的安全性,虽然不能改变对象的值,但是可以改变对象的指向。 2、var (1)定义并赋值 ...
ES6之前,JS都只用var声明变量。ES6不仅增加了let和const两个关键字,而且还让这两个关键字压倒性的超越var成为首选。 1.var 使用var声明变量,变量会被自动添加到最近的上下文(作用域)。 如在函数中,最近的上下文就是函数的局部上下文。如果变量未经声明就被初始化 ...
使用var关键字声明的全局作用域变量属于window对象。 使用let关键字声明的全局作用域变量不属于window对象。 使用var关键字声明的变量在任何地方都可以修改。 在相同的作用域或块级作用域中,不能使用let关键字来重置var关键字声明的变量。 在相同的作用域或块级作用域中,不能使 ...