行之

新博客地址 www.imbeta.cn,更多内容,欢迎来访。微信公众号:程序员的诗和远方。公众号ID : MonkeyCoder-Life。本博客不再更新...

javascript的悬停


我们先来看一段代码:

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

f();

借助firedebug的控制台命令行编辑器,我们可以得到以下结果:

undefined   
local 

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


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

f();

在说下一个问题之前,先来看卡javascript中定义函数的两种方式,调试工具同样是使用firedebug的控制台命令行编辑器。

第一种,用变量声明的方式定义函数:

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

bar();

第二种,函数定义的方式定义函数:

function bar() {
           alert("bar global");   
}   

bar();

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

第一种

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

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

f();

运行会报错,因为这种方式相当于:

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

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

f();
用变量声明的方式定义函数时候,只有声明被提到函数的开头,而用函数定义的方式定义函数时,整个函数体都会被提到函数的开头。


第二种:

function bar() {
           alert("bar global");   
}   

//bar();

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

f();


这种方式等同于:

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

function f() {  
// 函数的声明和定义都悬挂到开头进行     
var bar = function() {          
alert("bar local");     
}     
bar(); 
}  

f();


这里发现,用函数定义的方式定义函数时,允许函数没定义之前就使用它。


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




PS:本文参考了网上一些关于javascript悬停的文章,加入了自己的实际操作。







阅读更多
版权声明:本博客已经不再更新,新博客地址:www.imbeta.cn,欢迎来访。微信公众号:程序员的诗和远方。公众号ID : MonkeyCoder-Life~~本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/boycycyzero/article/details/7401919
个人分类: javascript
想对作者说点什么? 我来说一句

javascript div鼠标悬停提示信息

2010年05月14日 26KB 下载

鼠标悬停提示JS实现

2008年11月19日 14KB 下载

通讯录的条目悬停

2018年01月30日 23.1MB 下载

js实现鼠标悬停显示二级菜单

2014年03月10日 2KB 下载

Recycler的条目悬停

2018年01月30日 25.64MB 下载

Tablayout上拉悬浮

2018年06月08日 123KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭