`
jingwei.yang
  • 浏览: 3086 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

javascript悬挂

阅读更多
先看一段代码:

 

var scope = "global";
function f() {
console.log(scope); 
var scope = "local"; 
console.log(scope); 
}

这段代码的输出结果是:

undefined
local

 js犀牛书上的解释是,与全局变量同名的局部变量在整个函数内部覆盖全局变量。简而言之,所有函数体内的变量声明(注意,仅仅是声明)都将被提到函数体开头进行。上述代码相当于以下代码的运行结果:

 

var scope = "global";
function f() {
var scope; //声明提到这里
console.log(scope); 
var scope = "local"; //赋值仍然在这里
console.log(scope); 
}

 

关于嵌套函数的定义则更加有趣,函数的定义分为以下两种方式:

var f = function(){
//statement here;
}

function f(){
//statement here;
}
 

由于js“悬挂”的存在,以上两种函数定义在下面的函数中有不同表现。

var bar = function(){
        alert("bar global");
}
function f() {
	bar();
	function bar(){
        	alert("bar local");
   	}
}

//以上语句等同于
/*
var bar = function()
 {
        alert("bar global");
}
function f() {
// 函数的声明和定义都悬挂到开头进行
var bar = function()
   {
        alert("bar local");
   }
bar();
}
*/
 
var bar = function() {
        alert("bar global");
}
function f() {
bar();
var bar = function()
   {
        alert("bar local");
   }
}

/*
而这种方法则等同于:
var bar = function(){
      alert("bar global");
}

function f(){
  var bar;
  bar();
  var bar = function(){
        alert("bar local")
   }
}

*/

也即,用变量声明的方式定义函数时候,只有声明被提到函数的开头,而用函数定义的方式定义函数时,整个函数体都会被提到函数的开头,这样导致了一个问题:

       第二种定义方式允许函数没定义之前就使用它。

因此,在js good parts中作者推荐是用 var bar = function(){}的方式定义函数。

 

 

分享到:
评论

相关推荐

    javascript网站广告代码大全

    JavaScript是Web开发中不可或缺的一部分,尤其在创建动态和交互性的网页内容方面。在这个"JavaScript网站广告代码大全"中,我们可能会发现一系列用于实现各种广告展示形式的代码示例,包括超酷选项卡广告、幻灯片...

    asp.net 悬挂式窗口源码

    2. **JavaScript/JQuery**:在客户端,JavaScript或JQuery库通常用于处理用户的交互事件,例如点击按钮打开或关闭悬挂式窗口。 3. **CSS**:为了控制悬浮窗口的样式和位置,开发者会使用CSS(Cascading Style ...

    CAD图形中自动处理悬挂的探讨.pdf

    在这个部分,作者强调了HTML5、CSS3和JavaScript在现代网页设计中的重要性。此外,作者也提到了Bootstrap和layui这两个前端开发框架,这些框架能帮助开发者快速构建响应式网页和用户友好的界面。通过这些技术的结合...

    jquery+css3图片墙悬挂效果

    【jQuery + CSS3 图片墙悬挂效果】是一种利用现代网页技术实现的动态视觉展示方式,主要结合了jQuery的交互性和CSS3的动画效果。这种效果通常用于创建一个充满活力和吸引力的图片展示区域,用户可以自由地拖动图片,...

    HTML5 Canvas悬挂弹性文字特效.zip

    总的来说,这个“HTML5 Canvas悬挂弹性文字特效”是一个利用HTML5 Canvas API和JavaScript实现的交互式动画效果。它展示了如何将Canvas的绘图功能与用户的交互结合起来,创造出动态且引人注目的网页元素。学习和理解...

    CarSimulator使用JavaScript实现基于模糊控制遗传算法和粒子群优化的模拟车

    在Car Simulator中,遗传算法可能被用于调整车辆参数,例如悬挂系统、轮胎抓地力等,以找到最佳的性能配置。通过模拟自然选择和遗传过程,算法可以在大量的解决方案中搜索最优解,提高模拟车的性能和稳定性。 粒子...

    Stickman Hangman Game in JavaScript with Source Code.zip

    棒人绞刑游戏,又称"悬挂小人"游戏,是一种经典的猜词游戏,玩家需要根据给出的提示猜出单词。在这个JavaScript版本中,游戏的核心逻辑将完全由JavaScript编写,这包括但不限于事件监听、DOM操作、数据处理和动画...

    使用 JavaScript 实现四子棋连线的源代码.zip

    每位玩家必须先选择一种颜色,然后轮流将一个彩色圆盘从顶部放入七列六行垂直悬挂的网格中。开始时,您必须提供玩家的姓名。之后,您就可以开始玩游戏了。 如何运行该项目? 要运行此项目,我们建议您使用现代浏览器...

    JavaScript中的连接4游戏源代码.zip

    这里,玩家1轮流放下橙色的圆盘,而玩家2轮流从顶部放下紫色的圆盘,进入一个七列六行的垂直悬挂网格。一旦某位玩家赢得游戏,你可以重新开始游戏。 如何运行项目? 要运行这个项目,我们推荐您使用现代浏览器,如...

    使用 JavaScript 源代码构建塔楼游戏.zip

    项目:使用 Javascript 构建塔楼游戏 建塔游戏是一个 javascript 和 HTML5 项目。这款游戏由百度创建。游戏的主要目标是建造不断从上方掉落的塔。整个项目由 Javascript 和 HTML5 组成。项目中还使用了 CSS 来使设计...

    CSS3悬挂的照片墙效果代码.zip

    6) 最后,可能需要通过JavaScript来响应用户的交互,如鼠标悬停时改变照片的角度或位置。 在这个"jiaoben181868"的代码示例中,你可以看到这些CSS3技术的实际应用,通过学习和理解这个代码,你可以掌握创建悬挂...

    使用 JavaScript 编写的四子棋游戏及其源代码.zip

    每位玩家必须先选择一种颜色,然后轮流将一个彩色圆盘从顶部放入七列六行垂直悬挂的网格中。开始时,您必须提供玩家的姓名。之后,您就可以开始玩游戏了。 要运行此项目,我们建议您使用现代浏览器,例如 Google ...

    QQ在线客服悬挂右测带隐藏JS代码,兼容所有浏览器

    在这个特定的案例中,“QQ在线客服悬挂右测带隐藏JS代码”是指一种设计,该设计将QQ客服图标悬停在网页的右侧,并且具有智能隐藏功能,即当鼠标移过时显示,移开后自动隐藏。这样的设计既节省了页面空间,又不影响...

    CSS3图片倾斜悬挂效果.rar

    总结,"CSS3图片倾斜悬挂效果.rar"是一个展示如何使用CSS3和JavaScript创建动态、交互式网页设计的实例,它涉及到了CSS3的transform属性、定位技术、图片资源管理以及可能的JavaScript交互增强。这个案例对于学习和...

    jQuery悬挂摇摆的弹珠动画特效.zip

    "jQuery悬挂摇摆的弹珠动画特效"就是一个旨在实现这种效果的资源,它结合了jQuery、CSS和JavaScript的力量,为网页添加生动有趣的动态元素。接下来,我们将详细探讨这个特效背后涉及的技术和知识点。 首先,jQuery...

    网站设计中页面上悬挂的qq,旺旺,msn等客服窗口

    在网站设计中,为了提供更好的用户体验和服务,许多网站会在页面上悬挂各种即时通讯工具的客服窗口,如QQ、旺旺、MSN等。这些客服窗口旨在让访客能够快速、便捷地与网站的客服人员进行交流,解答他们的问题,提高...

    单独关闭的两边悬挂代码.rar

    【标题】:“单独关闭的两边悬挂代码.rar”指的是一个压缩包文件,其中包含了实现特定JavaScript特效的代码。这种特效通常是指在网页的两侧有元素(如广告、通知或菜单)悬浮并固定在屏幕边缘,即使用户滚动页面,...

    在Rust中编写JavaScript解析器的教程.zip

    它的类型系统和所有权模型确保了程序在运行时不会有悬挂指针或数据竞争等常见错误。这使得Rust成为构建复杂、低级任务如解析器的理想选择。 **解析器基础** 在开始编写JavaScript解析器之前,我们需要了解解析器的...

    Hangman Game using Vanilla JS in JavaScript Free Source Code.zip

    《使用纯JavaScript实现猜词游戏——“悬挂人”游戏源代码详解》 JavaScript,简称JS,是Web开发中不可或缺的一部分,其灵活性和强大的功能使得开发者能够创建各种交互式网页应用。今天我们将深入探讨一个基于纯...

    CSS3悬挂灯泡点亮摇晃动画特效.zip

    总结来说,这个"CSS3悬挂灯泡点亮摇晃动画特效"是一个利用CSS3动画、转换和过渡特性的实例,结合JavaScript和jQuery的交互功能,创造出引人注目的网页效果。通过深入理解和学习这个案例,你可以进一步提升自己在网页...

Global site tag (gtag.js) - Google Analytics