`
zhouyrt
  • 浏览: 1125740 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JavaScript中函数声明优先于变量声明

 
阅读更多

即同一个标示符,先后用var和function声明它。最后它是什么呢?

 

var a; // 声明一个变量,标识符为a
function a() { // 声明一个函数,标示符也为a
}
alert(typeof a);

 

 

显示的是“function”,即function的优先级高于var。

 

有人觉得这是代码顺序执行的原因,即a被后执行的funcion覆盖了。好,将它们调换下。

function a() {
}
var a;
alert(typeof a);
 
结果仍然显示的是“function”。即函数声明优先于变量声明。

我们把代码稍作修改,声明a时同时赋值。
function a() {
}
var a = 1; // 注意此处
alert(typeof a);
 
这时显示的是“number”,这相当于
function a() {
}
var a;
a = 1; // 注意此处
alert(typeof a);
 
即把“var a = 1”拆分为两步。 a被重新赋值了,自然是最后的那个值。
0
1
分享到:
评论
3 楼 justjavac 2012-02-20  
javascript中var a; 语句到底有没有声明局部变量。

alert(typeof a);  的查找顺序是局部,然后是全局(即window)。
函数声明并不优先于变量声明
2 楼 justjavac 2012-02-20  
呵呵。
两个a其实不是一个a。

var a; 局部变量。
function a(); 其实是window.a。


function a() {  
}  
var a;  
a = 1; // 注意此处  
alert(typeof a);  


其实,a=1中的a还是function(即window.a)。
1 楼 llq056 2012-02-17  
呵呵   先预编译 后执行赋值

相关推荐

    JavaScript中函数声明优先于变量声明的实例分析

    代码如下: var a; // 声明一个变量,标识符为a function a() { // 声明一个函数,标示符也为a } alert(...即函数声明优先于变量声明。 我们把代码稍作修改,声明a时同时赋值。 代码如下: function a() { } v

    Agent-No-29#technical-summary#变量提升-代码运行1

    函数声明式会提升到作用域最前边函数声明的优先级高于变量申明的优先级,并且函数声明和函数定义的部分一起被提升函数体中拥有的变量会优先使用,即:var name =

    JavaScript网页特效应用开发手册

    5-3 声明变量 5-4 变量的类型 5-5 数值变量 5-6 字符串变量 5-7 不同类型变量转换方式 第6章 数组 6-1 什么是数组 6-2 建立与使用数组 第7章 基本运算 7-1 基本运算概念 7-2 数学运算符 7-3 数学运算符的优先顺序 7-...

    LiveAndLearn-[removed]记录学习Javascript的100天,教程来源于Asabeneh的30-Days-Of-JavaScript

    JavaScript是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web 页面的脚本语言而出名的,但是它也被用到了很多非浏览器环境中,例如 Node.js、 Apache CouchDB 和 Adobe Acrobat。...

    JavaScript 预解析的4种实现方法解析

    而且function的声明优先于var声明。 不多说,,直接上代码 正规写法: var num=10; fun(); function fun(){ console.log(num);//undefined var num=20; } 预解析里:先将变量和函数提前,如下: var num; ...

    freemarker总结

    使用import指令导入库到模板中,Freemarker会为导入的库创建新的名字空间,并可以通过import指令中指定的散列变量访问库中的变量: ${my.mail} ${mail} 输出结果: <p>Copyright (C) 1999-2002 ...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    +在aspx页面中必须显示的声明控件的集合属性(比如Tabs(TabStrip), Items(PanelBase), Nodes(TreeNode))。 -这将会影响所有的aspx页面,所以要特别关注。 -重命名AccordionPanel为AccordionPane (这也是在Asp...

    newsic:一个将流行新闻与相关音乐相结合的Web应用程序

    新闻 按照此链接访问新闻网站 什么? 一种移动优先的Web应用程序,使用Guardian和Soundcloud API将流行新闻与相关音乐... 最重要的声明变量-var应该只遵循函数语句 window.localstorage 作为一个函数运行,例如“(

    ExtAspNet_v2.3.2_dll

    +在aspx页面中必须显示的声明控件的集合属性(比如Tabs(TabStrip), Items(PanelBase), Nodes(TreeNode))。 -这将会影响所有的aspx页面,所以要特别关注。 -重命名AccordionPanel为AccordionPane (这也是在Asp...

    亮剑.NET深入体验与实战精要2

    本书既考虑到实际开发中经常遇到的困惑和难题,也分析了解决问题的思路和方法,更总结出项目开发中不可或缺的技术点及思想。读者可以在欣赏一个个有趣例子的过程中,不知不觉具备开发真正商业项目的能力。 本书集...

    亮剑.NET深入体验与实战精要3

    本书既考虑到实际开发中经常遇到的困惑和难题,也分析了解决问题的思路和方法,更总结出项目开发中不可或缺的技术点及思想。读者可以在欣赏一个个有趣例子的过程中,不知不觉具备开发真正商业项目的能力。 本书集...

Global site tag (gtag.js) - Google Analytics