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语句

 

 

 

 

三、严格模式

 

 

 

 

 

posted @ 2022-05-13 23:48  Eric-Shen  阅读(162)  评论(0编辑  收藏  举报