发布于 2016-11-13 03:03:58 | 117 次阅读 | 评论: 0 | 来源: 网友投递
这里有新鲜出炉的Javascript教程,程序狗速度看过来!
JavaScript客户端脚本语言
Javascript 是一种由Netscape的LiveScript发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
仅在}之前、一个或多个换行之后和程序输入的结尾被插入
也就是说你只能在一行、一个代码块和一段程序结束的地方省略分号。
也就是说你可以写如下代码
function square(x) {
var n = +x
return n * n
}
function area(r) { r = +r return Math.PI*r*r }//error
仅在随后的输入标记不能解析时插入
也就是说分号插入是一种错误校正机制。看代码说话
a = b
(f())
//能正确的解析为一条单独的语句 单价于下面这条语句
a = b(f())
a = b
f()
//被解析为两条独立的语句
a = bf();//解析有误
所以你必须得注意下一条语句的开始,从而确定你是否能够合法的省略分号。
(、[、+、-、和/ 这五个字符开始的语句,那么最好前面不要省略分号。
举例说明一下哦
a = b
['r', 'g', 'b'].forEach(function (key) {
console.log(key);
});
a = b['r', 'g', 'b'].forEach(function (key) {
console.log(key);
});
所以(、[、+、-、和/ 这五个字符开始的语句,那么最好前面不要省略分号。
想省略分号,有经验的程序员会在该语句的后面跟一个声明语句,以保证解析器解析正确。如下所示
a = b
var x//特意在此加了声明语句以保证a = b不会和(f())解析到一块儿
(f())
省略分号导致脚本连接问题
//file1.js
(function () {
//......
})()
//file2.js
(function () {
//......
})()
上述两个文件连接时,就会被解析成如下
(function () {
//......
})()(function () {
//......
})()
所以省略分号不仅需要当心当前文件的下一个标记,而且还需要当心脚本连接后可能出现在语句之后的任一标记。
为避免解析器解析错误,你可以在每个文件前缀一个额外的分号以保护脚本免受粗心连接的影响。如果文件最开始的语句以上述5个脆弱字符开关,你就应该添加额外的分号前缀。
JavaScript语法限制产生式
JavaScript语法限制产生式:不允许在两个字符之间出现换行。
举例说明:
return
{};
return;
{}
;
自增自减运算的分号插入规则
a
++
b
a;
++b;
分号不会作为分隔符在for循环空语句的头部被自动插入
for (var i = 0,total=1
i < length
i++) {
total*=i;
}
空循环体的while同样也需要显示的分号,否则也会导致解析错误
function mytest() {
while (true)
}
function mytest() {
while (true) ;
}
总结一下哦
1.仅在}标记之前、一行的结束和程序的结束处推导分号
2.仅在紧接着的标记不能被解析的时候推导分号
3.在以(、[、+、-、和/ 字符开头的语句前绝不能省略分号
4.当脚本连接的时候,在脚本之间显式的插入分号
5.在return、throw、break、continue、++或--的参数之前绝不能换行
6.分号不能作为for循环的头部或空语句的分隔符而被推导出