?
?<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>js-了解分号的插入</title>
</head>
<body>
<script>
?
/*****特别注意(,[,+,-,/*********/
var f = function() {
? ?alert(123);
}
var b
var x
var a = b
// (f()) // 会被解析为 var a = b(f()); 并不会插入分号。// 会报typeerror:undefined is not a function?
?
/******return后回车会加入分号*************/
var fn = function() {
? ?return?
? ?{};
};
alert(fn()); // undefined; 会在return 后插入分号
?
var fn1 = function() {
? ?return {};
};
alert(fn1()); // object
?
/******++,--插入分号的情况******************/
var c = 1;
var d = 2;
c
++
d; // c为1; d为3;
?
</script>
?
<p>
?
★★★关于 分号的插入 必须知道的是★★★:
?分号插入规则:
?1. 分号仅在}之前,一个或多个换行之后,和程序输入的结尾被插入。
? ? 也就是说,只能在一行、一个代码块、和一段程序结束的地方省略分号。
? function square(x) {
?var n = +x// 此处省略分号是合法的
?return n * n // 亦合法
? }
? function area(r){r = +r return r * r;} // syntax error
??
?2. 分号仅在随后的输入标记不能解析时插入,
?特别注意 (,[,+,-,/这五个字符。它们既是运算符,又是一条语句的前缀。参照 <script>的代码
?
?3. 强制插入分号的场景
? ? return 关键字后的换行
? ? throw、break、continue、++、--
? ??
?4. 不会插入分号的场景
? ? for,?
? ? ? ? ?空循环(while(true),for(var i=0;i<10;i++))// 会直接报语法错误
?
</p>
</body>
</html>
原文:http://mumu-shoucang.iteye.com/blog/2279124