一,局部變量先使用后聲明,不影響外部同名變量
復制代碼 代碼如下:
var x = 1; // --> 外部變量x
function fn(){
alert(x); // --> undefined 局部變量x先使用
var x = 2; // 后聲明且賦值
}
fn();
alert(x); // --> 1<BR>
但在其它語言如C,Java中卻是不允許的。變量必須先聲明后使用,如
復制代碼 代碼如下:
public class Test {
public static void main(String[] args) {
System.out.println(x); // 先使用
int x = 10; // 后聲明
}
}
第二點,函數fn內的局部變量x不會影響到外部的變量x。即fn內alert輸出不是1,而是undefined。
二,形參優先級高于函數名
復制代碼 代碼如下:
function fn(fn){
alert(fn);
}
fn('hello'); // --> "hello"
三,形參優先級高于arguments
復制代碼 代碼如下:
function fn(arguments){
alert(arguments);
}
fn('hello'); // --> "hello"<BR>
這里剛好將形參聲明成與其同名。輸出可以看到是"hello"而非"[object Object]",即形參arguments覆蓋了語言本身提供的真正的arguments。
四,形參優先級高于只聲明卻未賦值的局部變量
復制代碼 代碼如下:
function fn(a){
var a;
alert(a);
}
fn('hello'); // --> "hello"
五,聲明且賦值的局部變量優先級高于形參
復制代碼 代碼如下:
function fn(a){
var a = 1;
alert(a);
}
fn('hello'); // --> "1"
六,形參賦值給同名局部變量時
復制代碼 代碼如下:
function fn(a){
var a = a;
alert(a);
}
fn('hello');
新聞熱點
疑難解答
圖片精選