首先,首先声明局部变量,并且不
影响外部同名变量。
复制代码代码如下所示:
变量x=1;外部变量
函数FN(){
警报(x);使用
本地变量
变量x = 2;在声明和赋值之后
}
(FN);
警报(x); > 1
第一点是函数的第一个句子是x,x在第二个句子中定义,这在js中是允许的,这里的允许是不能
运行任何语法
错误程序。
但它不是在其他
语言如C,java允许。一个变量必须首先声明和使用,如
复制代码代码如下所示:
公共类测试{
public static void main(String { } args){
System.out.println(x); / /第一次使用
int = 10;在语句之后
}
}
在java编译器会
提示错误,程序无法运行。
第二,函数FN中的局部变量x不影响外部变量x,即FN中的警报输出不是1,而是未定义的。
二、表单的优先级高于函数名
复制代码代码如下所示:
函数FN(FN){
警戒(FN);
}
FN(你好); / / - >你好
您可以看到函数的名称和
参数的名称
都是FN,输出是字符串hello
三,参数的优先级高于参数。
复制代码代码如下所示:
函数FN(参数){
警报(参数);
}
FN(你好); / / - >你好
参数对象可以直接在函数中使用,并且是由语言本身提供的特殊标识符。
这里是同名的参数语句。输出可以被视为hello而不是{对象对象}。
四,参数的优先级高于仅声明但未赋值的局部变量。
复制代码代码如下所示:
函数FN(a){
VaR;
警报(a);
}
FN(你好); / / - >你好
函数FN参数是A,函数中的第一个句子只声明局部变量A,但不赋值它。从输出结果是hello而不是未定义的,可以看出表单的优先级高于本地变量,a只声明,但不赋值。
五,声明和分配的本地变量的优先级高于表单参数。
复制代码代码如下所示:
函数FN(a){
var a=1;
警报(a);
}
FN(你好); / / 1 -- >
函数FN参数是A,函数中的第一个句子只声明局部变量a,赋值是1。从输出结果是1而不是hello。
六,当参数被分配给同名的本地变量时
复制代码代码如下所示:
函数FN(a){
var;
警报(a);
}
FN(你好);
暂时不要运行,猜测结果。在第五点声明和赋值的局部变量的优先级要高于表单参数。然后A将是未定义的。
这里的21不互相干扰,没有人覆盖任何人,这与本地变量的优先级刚好高于表单的参数相矛盾,但是引擎做了我们想做的事情,因为它不希望var a = a未定义。