你的位置:首页 > 软件开发 > Java > JavaScript中变量名重名

JavaScript中变量名重名

发布时间:2012-03-01 11:00:28
今天看到园子里的一篇文章,进的是变量名的重名问题,我们直接来看代码: var a;function a() { }alert(typeof a);这里alert的结果是function。但如果我将代码改一行,声明之后立即assign a value:var a=1; // 注意变化,声明后立即赋值function a() {}alert(typeof a);这时输出的却是numbe ...

今天看到园子里的一篇文章,进的是变量名的重名问题,我们直接来看代码:

var a;function a() { }alert(typeof a);

这里alert的结果是function。但如果我将代码改一行,声明之后立即assign a value:

var a=1;        // 注意变化,声明后立即赋值function a() {}alert(typeof a);

这时输出的却是number,为什么?博主的解释并不在理,他的意思是var a=1;被解释成:var a; a=1。解释没错,但没能解释为什么第二个代码输出是number。

我们还可以将代码再变化一下:

var a=1; a = function () {   //注意变化}alert(typeof a);

 

经过思考,我的理解是:function foo(){}这种形式的函数声明是在词法解析(lexical analysis)时就可以确定的,也就是说跟var a;类似这种变量及定义都可以在词法解析时确定。换个说法就是这些都是静态可以确定的。

JavaScript是动态语言,他的变量只是一个引用而已,可以在运行时(runtime)指向任何类型实体。所以变量的类型也是运行时变化的,我们可以通过例子看一下:

var a=1; console.log(typeof a);a = function() { }console.log(typeof a);a = "";console.log(typeof a);

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:JavaScript中变量名重名

关键词:JavaScript

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。