一,局部变量先使用后声明,不影响外部同名变量
复制代码 代码如下:
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');
新闻热点
疑难解答
图片精选