数码资讯
Javascript学习谈论全局变量和js的局部变量(推荐)
今天,一个实习的小妹妹问我这两个js代码的区别。 代码1: var; 函数测试(){ VaR; 警报(a); a 世界; 警报(a); } 代码的两: var; 函数测试(){ 警报(a); a 世界; 警报(a); } 我想这很容易,不是全局变量和局部变量的范围问题吗我说:当全局变量名为局部变量时
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
今天,一个实习的小妹妹问我这两个js代码的区别。
代码1:
var;
函数测试(){
VaR;
警报(a);
a 世界;
警报(a);
}
代码的两:
var;
函数测试(){
警报(a);
a 世界;
警报(a);
}
我想这很容易,不是全局变量和局部变量的范围问题吗我说:当全局变量名为局部变量时,局部变量作用域将覆盖全局变量范围,当离开局部变量作用域,并返回到全局变量范围时。因此,两段代码的结果如下:1)未定义的世界2)Hello World。
var a=1;
函数测试(){
警报(a);
var a=2;
警报(a);
}
测试();
警报(a);
你猜结果是什么它的输出是121吗好吧,当我把测试用例放在她面前,这样想,但在测试输出之后……运行结果是不确定的21。当时,尽管有很多想法,仍然困惑,问山谷老师知道,我的JS不是很理解,所以努力学习和测试,总结如下:
Javascript,变量作用域是基于块划分(由一对大括号{函数}来划分)。记住,它是函数块,for,if和if块不是操作范围的标准,你可以看到下面的例子:
功能test2(){
警报(前范围:+我); / /我(未分配的任何声明!用一个未声明的变量或函数从一个致命错误中抛出,中断脚本执行。
这是我的价值 / /不确定性
对于(var i = 0;i < 3;i + +){
警报(在范围:+ i);0, 1, 2是i的值,当我在循环中为3时
}
警报(范围之后:+ i); 3,是i的值,现在在范围内,但我仍然保留为3。
当(真){
var j=1;
打破;
}
警报(j);1,是j的值,现在在作用域,但j仍然保留为1。
如果(真){
var = 1;
}
警报(k);值是1,注意它现在在IF范围之外,但是k的值仍然是1。
}
test2();
如果在这个时候(功能/范围)的输出只存在于test2这个功能范围I,J,K的变量会发生什么样的影响
警报(i);错误!是的,这是错误。原因是我没有宣布变量(不分配价值,这是个函数的第一行输出),从而导致脚本错误,以及程序的终结。
警报这行打印出来吗;未执行
警报(j);未执行
警报(k);未执行
第二,Javascript将在执行前对整个脚本文件(包括本地变量)的声明进行全面分析,从而确定真实变量的范围。您如何理解它请看下面的例子:
var a=1;
函数测试(){
警报(a);未定义的!这不是一个全局变量,这是因为函数作用域已经声明(从底部的函数第四行)一个本地变量名,
因此,全局变量a被覆盖,这表明执行前的Javascript将对脚本文件定义的整个部分进行完整的分析,因此在执行之前的函数测试(),
在函数体中指向变量一个内部变量。全局变量而不是指向外部。但是当A不仅是语句,赋值,也就是未定义的输出。
= 4
警报(A);A是4,没有悬念这是一个局部变量。
在这个语句中的一个局部变量
警报(a);a仍然是4,因为它已经给4了一个
}
测试();
警报(a);a是1,它不在函数作用域中,a的值是全局变量的值。
三,当全局变量名带有局部变量时,局部变量作用域将覆盖全局变量范围,当离开局部变量范围时,返回到全局变量范围,当全局变量在局部变量中时,如何使用全局变量使用window.globalvariablename。
var a=1;
函数测试(){
警报(窗口A);A是1,A是全局变量。
var = 2;这个定义中的本地变量
警报(a);a是2,A是本地变量。
}
测试();
警报(a);a是1,它不在函数作用域中,a的值是全局变量的值。
当然,更多的文章可以参考以下文章。
代码1:
var;
函数测试(){
VaR;
警报(a);
a 世界;
警报(a);
}
代码的两:
var;
函数测试(){
警报(a);
a 世界;
警报(a);
}
我想这很容易,不是全局变量和局部变量的范围问题吗我说:当全局变量名为局部变量时,局部变量作用域将覆盖全局变量范围,当离开局部变量作用域,并返回到全局变量范围时。因此,两段代码的结果如下:1)未定义的世界2)Hello World。
var a=1;
函数测试(){
警报(a);
var a=2;
警报(a);
}
测试();
警报(a);
你猜结果是什么它的输出是121吗好吧,当我把测试用例放在她面前,这样想,但在测试输出之后……运行结果是不确定的21。当时,尽管有很多想法,仍然困惑,问山谷老师知道,我的JS不是很理解,所以努力学习和测试,总结如下:
Javascript,变量作用域是基于块划分(由一对大括号{函数}来划分)。记住,它是函数块,for,if和if块不是操作范围的标准,你可以看到下面的例子:
功能test2(){
警报(前范围:+我); / /我(未分配的任何声明!用一个未声明的变量或函数从一个致命错误中抛出,中断脚本执行。
这是我的价值 / /不确定性
对于(var i = 0;i < 3;i + +){
警报(在范围:+ i);0, 1, 2是i的值,当我在循环中为3时
}
警报(范围之后:+ i); 3,是i的值,现在在范围内,但我仍然保留为3。
当(真){
var j=1;
打破;
}
警报(j);1,是j的值,现在在作用域,但j仍然保留为1。
如果(真){
var = 1;
}
警报(k);值是1,注意它现在在IF范围之外,但是k的值仍然是1。
}
test2();
如果在这个时候(功能/范围)的输出只存在于test2这个功能范围I,J,K的变量会发生什么样的影响
警报(i);错误!是的,这是错误。原因是我没有宣布变量(不分配价值,这是个函数的第一行输出),从而导致脚本错误,以及程序的终结。
警报这行打印出来吗;未执行
警报(j);未执行
警报(k);未执行
第二,Javascript将在执行前对整个脚本文件(包括本地变量)的声明进行全面分析,从而确定真实变量的范围。您如何理解它请看下面的例子:
var a=1;
函数测试(){
警报(a);未定义的!这不是一个全局变量,这是因为函数作用域已经声明(从底部的函数第四行)一个本地变量名,
因此,全局变量a被覆盖,这表明执行前的Javascript将对脚本文件定义的整个部分进行完整的分析,因此在执行之前的函数测试(),
在函数体中指向变量一个内部变量。全局变量而不是指向外部。但是当A不仅是语句,赋值,也就是未定义的输出。
= 4
警报(A);A是4,没有悬念这是一个局部变量。
在这个语句中的一个局部变量
警报(a);a仍然是4,因为它已经给4了一个
}
测试();
警报(a);a是1,它不在函数作用域中,a的值是全局变量的值。
三,当全局变量名带有局部变量时,局部变量作用域将覆盖全局变量范围,当离开局部变量范围时,返回到全局变量范围,当全局变量在局部变量中时,如何使用全局变量使用window.globalvariablename。
var a=1;
函数测试(){
警报(窗口A);A是1,A是全局变量。
var = 2;这个定义中的本地变量
警报(a);a是2,A是本地变量。
}
测试();
警报(a);a是1,它不在函数作用域中,a的值是全局变量的值。
当然,更多的文章可以参考以下文章。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。