快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

亚游国际游戏官网:Javascript的var关键字深度剖析



javascript中的var关键字,感化很简单。用于声明一个变量。假如不给声明的变量赋值则为undefined.

var test = 'test'; var t;

此时test值为,'test', t 的值为undefinde.

彷佛很简单,并没亚游国际游戏官网有什么特殊的地方。只要学过js的,都知道。

那么请看下面这段代码的履行结果。

console.log(test);

var test = 'test'; console.log(test);

这样先输出了undefunde 然后输出了test。很稀罕吧。信托很多同伙会以为会孕育发生差错。

由于我们在输出test时,它还未被定义。结果应该像输出一个不决义的变量那样被抛出差错才对。可是事实却并非如斯。

这是为什么呢,原本JS在解析时var 会被预先解析。也便是说,这段代码的实际运行效果是这样的。

var test;

console.log(test); test = 'test';

console.log(test);

这样一来就清晰多了吧,信托大年夜家应该都能看明白。

接下来我们看一个繁杂点的。

var test = 'test';

console.log(test); //1 亚游国际游戏官网function fn(){

console.log(test);//2

var test = 'function test';

console.log(test);//3

}

fn();

console.log(test); //4

上面这段代码,会依次输出。

1.test

2.undefined

3.function test

4.test

信托这个大年夜家都明白,道理与上面一样。

函数内部被解析为

var test;//定义test

console.log(test); //输出test,值为undef亚游国际游戏官网ined,由于当前情况内存在test,不在感化域链中向上查找test, 故此输出undefined

test = 'function test'; //给test赋值为 'function test'.

console.log(test); //输出test ,值为function test;

我们在看一个例子

consol亚游国际游戏官网e.log(test);

var test = 'test';

function test(){}

console.log(test);

函数与变量同名的环境,当然。这种环境实际开拓中险些不会碰到。

上面这个例子会输出 function test(){} 然后输出 'test', 缘故原由是由于funciton会比var先解析。

而在javascript中,函数是工具,函数名却是一个变量(变量里保存的是函数的引用)。

以是在在碰到第一次输出test时,输出的不是undefined 而是将函数输出。

后面的履行历程大年夜家应该都清楚了。

我们着末在看一个例子,

function fn(){

test = 'bbb';   var test = 'ccc';

console.log(test); }

fn();

console.log(test);

按照正常思路,彷佛会输出ccc,然后输出bbb。由于test 前面没有var 此时它代表全局变量。

然而很不幸的是,会先输出'ccc'然后抛出一个差错.缘故原由是test不存在。

缘故原由是什么呢,很简单。由于fn内亚游国际游戏官网部解析历程是这样的。

var test;

test = 'bbb';

test = 'ccc';

故此test = bbb 实际是对函数内部的test 进行操作。

由此上例子我们可以的到一个结论,在js中调用可以在定义前面的,不止是function;变量也可以,见下例;

function fn(){

test = 'ttt';

alert(test);

return;

var test;//此定义会被解析到赋值语句之前,故此上面的test 是函数内部变量。 }

此时的test依旧是函数内部变量。

以上就是var的关键字的一些特点,如有差错或漏掉之处。迎接指出。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: