js语法知识一

语法一:
[color=Red]js的最长匹配的具体含义是:如果单行语素构成一个完整的句子,那么不管末尾是否有分号,都作为一个独立句子来执行。否则的话匹配多行,直接到这些行共同构成完整句子或者出现分号为止。[/color]eg:
[code]function(a,b){
return
a||b;
}[/code]该段代码本来应该是return a||b;然而这种排版格式却让解析器将代码解析成了return;a||b;(因为return可以作为一个完整的句子来执行)结果返回值没有了。再看下面这段代码:
[code]function(a,b){
return a||
b;
}[/code]return a||不是一个句子,所以会继续执行,直到b;才算是完整的一句话。
语法二:
[color=Red]javascript除函数(或闭包)外的任何程序段落都不是独立的域,这一点与c、c++以及java明显不同。换句话说,javascript没有块级作用域,函数体内声明的所有变量,无论在哪里声明的,在整个函数中它们都是有定义的。[/color]
在c++中,以下代码是错误的:
[code]for(int i = 0; i < 10; i++){
List[i] = i;
}
count<<"The value of last item is "<<List[i-1];[/code]
因为i是在循环体语句块内定义的变量,它的作用域是for循环体,所以应该吧i定义在for循环外面。
但是在javascript中,下面的两段代码等价:
[code]for(var i = 0; i < 10; i++){
List[i] = i;
}
document.write("The value of last item is "+List[i-1]);[/code]
[code]var i = 0;
for(i = 0; i < 10; i++){
List[i] = i;
}
document.write("The value of last item is "+List[i-1]);[/code]
因为无论是在for循环内声明的i还是在循环体外声明的i,它们的作用域没有区别,也就是说,javascript中除闭包和函数外的程序段落都不是域。

评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复