加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 教程 > 正文

JavaScript的strict模式与with关键字讲述

发布时间:2023-10-04 14:28:54 所属栏目:教程 来源:
导读:很久很久以前,神笔马良的家乡为了纪念他要将一条马路以他的名字命名。马良没有推辞,不过提出了四个字的意见。多年以后,一位外地人来到这里,在这条马路上拦住一个当地人问路。

请问这是神马路?

对,这是
很久很久以前,神笔马良的家乡为了纪念他要将一条马路以他的名字命名。马良没有推辞,不过提出了四个字的意见。多年以后,一位外地人来到这里,在这条马路上拦住一个当地人问路。
 
请问这是神马路?
 
对,这是神马路。
 
你也不知道吗?
 
我就是这的人,怎么会不知道。
 
那这是神马路?
 
你知道了还问什么。
 
我就是不知道这是神马路。
 
那我不是已经告诉你这是神马路了吗?
 
你能不能再说一遍这是神马路?
 
……
 
过后,这个当地人想起当年神笔马良的意见,恍然大悟。马良说的是——勿用简称。
 
A Question
 
One day Tom said to Wang Er, his Chinese friend,“I have a dream. I want to show myself on CCTV.”The next day Tom broke into a neighbor shop. The police didn't take much time to identify and arrest Tom because he was captured very clearly by the shop's CCTV.
 
The question is when Tom said his dream, he is
 
A) ambitious B) not ambitious C)ambiguous D) unambiguous
 
The right answer is B) and C).
 
正文
 
以上两个古今中外的例子说明简写有时会引起歧义。这在Javascript中也存在。有时候要反复引用一个名字很长的变量是很麻烦的,比如:
 
objectWithLongName1.propty1=value1;
 
objectWithLongName1.propty2=value2;
 
objectWithLongName1.propty3=value3;
 
objectWithLongName1.method1();
 
但是一个清晰的名字对于程序的可读性又是很重要的。所以Javascript提供了with语句。上面的例子可以改写成:
 
代码如下:
 
with (objectWithLongName1){
 
propty1=value1;
 
propty2=value2;
 
propty3=value3;
 
method1();
 
}
 
这样省去不少敲打键盘的功夫,而且程序的结构也变得更加清晰。但是这样的简写引入了歧义,我们如何知道大括号内的名称,哪些是objectWithLongName1的属性和方法,哪些是外部变量和函数。Javascript的解析规则是,先在objectWithLongName1上查找这些名称的属性,如果没有找到,则认为它们是外部变量。
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章