最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

为什么JavaScript严格模式禁用With语句

来源:动视网 责编:小采 时间:2020-11-27 20:13:05
文档

为什么JavaScript严格模式禁用With语句

为什么JavaScript严格模式禁用With语句:看了很多遍JavaScript严格模式,其中有说禁用With语句今天禁不住想知道为何严格模式就容不下with语句呢,如果你也表示疑惑可以看看哦看了很多遍JavaScript严格模式,其中有说禁用With语句,以前看到这都是骑马观花,一带而过,因为平时就很少用到
推荐度:
导读为什么JavaScript严格模式禁用With语句:看了很多遍JavaScript严格模式,其中有说禁用With语句今天禁不住想知道为何严格模式就容不下with语句呢,如果你也表示疑惑可以看看哦看了很多遍JavaScript严格模式,其中有说禁用With语句,以前看到这都是骑马观花,一带而过,因为平时就很少用到


看了很多遍JavaScript严格模式,其中有说“禁用With语句”今天禁不住想知道为何“严格模式”就容不下with语句呢,如果你也表示疑惑可以看看哦

看了很多遍JavaScript严格模式,其中有说“禁用With语句”,以前看到这都是骑马观花,一带而过,因为平时就很少用到这个语句,禁不禁用对自己关系都不是很大。今天禁不住想知道为何“严格模式”就容不下with语句呢?

EcmaScript规范上说“with 语句用于设置代码在特定对象中的作用域”,可以看出,With语句改变了作用域链。

上面的代码会报Uncaught ReferenceError: job is not defined 。

如果将上面的with语句块改为

str = title+zhangsan.name+',年龄'+zhangsan.age+'岁,'+zhangsan.sex+'性'+',职位'+zhangsan.job;

则不报错,输出str 为:申请人:张三,年龄20岁,男性,职位undefined

对于with语句块中的变量,在执行时,都要在zhangsan中检查是否它的属性。

我们知道运行脚本时,需要两个过程,首先是编译,然后再执行。
很显然在编译的时候,不能确定zhangsan的这变量表示的对象有哪些属性。只能在执行时才能确定zhangsan是Person的一个实例。所以就不能在编译时确实with语句块中的变量是zhangsan的属性还是上一层变量作用域链中的变量。

这与严格模式有编译时就检查变量是否定义冲突,所以严格模式不会允许异已存在,因此严格模式禁用With语句,也就不难理解了。

文档

为什么JavaScript严格模式禁用With语句

为什么JavaScript严格模式禁用With语句:看了很多遍JavaScript严格模式,其中有说禁用With语句今天禁不住想知道为何严格模式就容不下with语句呢,如果你也表示疑惑可以看看哦看了很多遍JavaScript严格模式,其中有说禁用With语句,以前看到这都是骑马观花,一带而过,因为平时就很少用到
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top