JS高级—06—with语句(五种作用域)、evel语句、严格模式
一、with 语句
在es6之后,我们现在有三个作用域 ,全局、函数、块级作用域;
es6之后引入块级作用域,单独的大括号、for、if里的大括号么,都会形成一个块级作用域,如果变量使用let、cosnt定义将不能突破块级作用域,但是var仍然可以突破块级作用域;但是不管你突破不突破,都是有这个作用域的;
with的作用是什么?
是拓展作用域链,下面的代码中,如果没有with,name和age将会去全局作用域中找,但是有了with,就相当去给这些代码加了一个外层作用域,将先去with里的obj中找,如果找不到再沿着作用域链去全局作用域找;
所以结果为 “helloworld”和18;
注意:说到外层作用域又要明白一个点,第一个是块级作用域,第二个根本就是定义一个对象的字面量形式,它可不是块级作用域!
它是定义一个对象,没有作用域!
它是定义一个对象,没有作用域!
它是定义一个对象,没有作用域!
除了全局作用域、块级作用域、函数作用域外、with作用域外,一种新的作用域参数作用域,在函数的参数有默认值时会有一种新的参数作用域;但是很少用到,了解即可;
课程(0’20‘‘),具体是哪一节的课程忘了,可能是335节,实在不行去百度搜参数作用域重新学下,但这个老师说了有印象即可,用的很少;
ecma规范就是这么定义的:
二、evel语句
三、严格模式