数码资讯
Javascript的严格模式和关键字
2009年12月,ECMAscript发布ECMAscript 5,一个版本的ECMAscript 3标准的距离已经颁布了十年,其间Javascript虽然在web编程,ECMAscript 4是最后因为这个语言的主要制造商的利益相关者和组织的复杂性(即,是否增加特征数扩展ECMAscript的功能
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
2009年12月,ECMAscript发布ECMAscript 5,一个版本的ECMAscript 3标准的距离已经颁布了十年,其间Javascript虽然在web编程,ECMAscript 4是最后因为这个语言的主要制造商的利益相关者和组织的复杂性(即,是否增加特征数扩展ECMAscript的功能)。死亡率的差异,使得新标准ECMAscript的发展明显落后于编程practice.ecmascript 5不那么雄心勃勃的目标。而不是添加JSON和反射更全面的控制更多的支持,一个重要的改进是引入严格的模式。在这种模式下,ECMAscript的语法变得更加严格,使原来的一些常见故障代码是不允许的,包括强制变量声明和不允许声明。该模型很简单,只需添加使用严格的脚本文件或函数的第一行;这样的字符串可以。
我知道在2010后,也写了一篇文章讨论了与关键字的缺陷,并附有以下内容。
楔
很久以前,神奇的故乡是为了纪念他,以他命名的一条街道。马亮没有拒绝,而是四个字的忠告。多年后,一个外来者来到这里,拦住了一个当地人问公路上的路。
请问这是上帝路吗
是的,这是上帝之路。
你不知道吗
我是这个人,怎么会不知道。
这是上帝之路吗
你知道该问什么。
我只是不知道这是一条上帝之路。
我不是告诉过你这是一条神道吗
你能再说一遍这是上帝之路吗
......
在这之后,当地人想起了魔术的评论,突然看到了光明。马亮说,并不是指。
一个问题
有一天,汤姆对Wang Er说,他的中国朋友,我有一个梦想。我想在中央电视台展示自己,第二天汤姆闯入一家邻居的商店。警方没有花太多时间来辨认和逮捕汤姆,因为他被商店的闭路电视拍摄得很清楚。
问题是当汤姆说出他的梦想时,他是
A)雄心勃勃的B(没有雄心勃勃的C)模棱两可的D)毫不含糊
正确的答案是B)和C)。
文本
上述两个古老的和现代的例子表明,缩写有时会造成歧义,它也存在于Javascript中,有时重复一个长名称的变量是非常麻烦的,例如:
objectwithlongname1 propty1 = value;
objectwithlongname1。propty2 = value2;
objectwithlongname1 propty3 =值;
objectwithlongname1.method1();
但是一个清楚的名字对于程序的可读性是很重要的:
复制代码代码如下所示:
与(objectwithlongname1){
propty1 =值1;
propty2 = value2;
propty3 =值;
方法();
}
这样可以节省大量的Kung Fu键盘,程序的结构也更加清晰。我们怎么知道在大括号中的名字,这是objectwithlongname1的属性和方法,这是外部变量和函数的解析规则的Javascript是第一objectwithlongname1上找到这些名字的属性,如果找不到它们,它们是外部变量。这是代码描述。
复制代码代码如下所示:
如果(objectwithlongname1.property1!=未定义的){
如果(objectwithlongname1.value1!=未定义的){
objectwithlongname1。属性= objectwithlongname1.value1; / / 5月1日
其他{ }
objectwithlongname1。属性= value1; / / 5月2日
}
其他{ }
如果(objectwithlongname1.value1!=未定义的){
属性= objectwithlongname1.value1; / / 5月3日
其他{ }
属性= value1; / / 5月4日
}
}
我们想要的是四种可能性之一,但其中之一是不小心,程序的执行将是另一种可能。此外,这样的编写对于程序的读者来说是非常困难的。另一方面,对于Javascript解释器,这种不确定性也影响到语言的性能。
其实,只要小的改进,就可以去掉这些缺陷。我们可以在前面的对象和属性中省略,所以在属性和外部变量之间有一个直观的区别,还有很多其他的语言都是这样做的:
复制代码代码如下所示:
与(objectwithlongname1){
propty1 = value;
propty2 = value2;
propty3 =值;
方法();
}
在Javascript进行这种改进之前,这两个元素有权轻松使用,并尽量避免使用语句,我们仍然可以使用一些变量方法。
复制代码代码如下所示:
VaR O1 = objectwithlongname1;
propty1 = value1 O1;
O1。propty2 = value2;
O1 propty3 =值;
o1.method1();
或是这种情况:
objectwithlongname1 propty1 = objectwithlongname2.propty1;
objectwithlongname1 propty2 = objectwithlongname2.propty2;
......
objectwithlongname1 propty10 = objectwithlongname2.propty10;
它可以写成:
复制代码代码如下所示:
(功能(O1,O2,PL){
pl.foreach(功能(项目){ } = { {项O1 O2项目};});
})(objectwithlongname1,objectwithlongname2,{ 'propty1 ',' propty2 ',…propty10};
我知道在2010后,也写了一篇文章讨论了与关键字的缺陷,并附有以下内容。
楔
很久以前,神奇的故乡是为了纪念他,以他命名的一条街道。马亮没有拒绝,而是四个字的忠告。多年后,一个外来者来到这里,拦住了一个当地人问公路上的路。
请问这是上帝路吗
是的,这是上帝之路。
你不知道吗
我是这个人,怎么会不知道。
这是上帝之路吗
你知道该问什么。
我只是不知道这是一条上帝之路。
我不是告诉过你这是一条神道吗
你能再说一遍这是上帝之路吗
......
在这之后,当地人想起了魔术的评论,突然看到了光明。马亮说,并不是指。
一个问题
有一天,汤姆对Wang Er说,他的中国朋友,我有一个梦想。我想在中央电视台展示自己,第二天汤姆闯入一家邻居的商店。警方没有花太多时间来辨认和逮捕汤姆,因为他被商店的闭路电视拍摄得很清楚。
问题是当汤姆说出他的梦想时,他是
A)雄心勃勃的B(没有雄心勃勃的C)模棱两可的D)毫不含糊
正确的答案是B)和C)。
文本
上述两个古老的和现代的例子表明,缩写有时会造成歧义,它也存在于Javascript中,有时重复一个长名称的变量是非常麻烦的,例如:
objectwithlongname1 propty1 = value;
objectwithlongname1。propty2 = value2;
objectwithlongname1 propty3 =值;
objectwithlongname1.method1();
但是一个清楚的名字对于程序的可读性是很重要的:
复制代码代码如下所示:
与(objectwithlongname1){
propty1 =值1;
propty2 = value2;
propty3 =值;
方法();
}
这样可以节省大量的Kung Fu键盘,程序的结构也更加清晰。我们怎么知道在大括号中的名字,这是objectwithlongname1的属性和方法,这是外部变量和函数的解析规则的Javascript是第一objectwithlongname1上找到这些名字的属性,如果找不到它们,它们是外部变量。这是代码描述。
复制代码代码如下所示:
如果(objectwithlongname1.property1!=未定义的){
如果(objectwithlongname1.value1!=未定义的){
objectwithlongname1。属性= objectwithlongname1.value1; / / 5月1日
其他{ }
objectwithlongname1。属性= value1; / / 5月2日
}
其他{ }
如果(objectwithlongname1.value1!=未定义的){
属性= objectwithlongname1.value1; / / 5月3日
其他{ }
属性= value1; / / 5月4日
}
}
我们想要的是四种可能性之一,但其中之一是不小心,程序的执行将是另一种可能。此外,这样的编写对于程序的读者来说是非常困难的。另一方面,对于Javascript解释器,这种不确定性也影响到语言的性能。
其实,只要小的改进,就可以去掉这些缺陷。我们可以在前面的对象和属性中省略,所以在属性和外部变量之间有一个直观的区别,还有很多其他的语言都是这样做的:
复制代码代码如下所示:
与(objectwithlongname1){
propty1 = value;
propty2 = value2;
propty3 =值;
方法();
}
在Javascript进行这种改进之前,这两个元素有权轻松使用,并尽量避免使用语句,我们仍然可以使用一些变量方法。
复制代码代码如下所示:
VaR O1 = objectwithlongname1;
propty1 = value1 O1;
O1。propty2 = value2;
O1 propty3 =值;
o1.method1();
或是这种情况:
objectwithlongname1 propty1 = objectwithlongname2.propty1;
objectwithlongname1 propty2 = objectwithlongname2.propty2;
......
objectwithlongname1 propty10 = objectwithlongname2.propty10;
它可以写成:
复制代码代码如下所示:
(功能(O1,O2,PL){
pl.foreach(功能(项目){ } = { {项O1 O2项目};});
})(objectwithlongname1,objectwithlongname2,{ 'propty1 ',' propty2 ',…propty10};
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。