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 @   Eric-Shen  阅读(247)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示