码迷,mamicode.com
首页 > Web开发 > 详细

js中函数提升及var变量提示

时间:2016-04-18 11:25:06      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:

其中,在javascript中,函数声明及var声明的变量会得到提升。但是函数声明会先于var声明的变量被提升。即便function写在后面。

看下面的例子:

var aa = 221;
function aa(){
alert(111);
}
console.log(aa);  //221

说明了函数声明先被提升了。而后面的var aa声明覆盖了aa函数,所以打印出来的是 ------ 221。

上面的语句在浏览器解析的时候其实是这样的。

function aa(){
    alert(111);
}
var aa;
aa = 221;
console.log(aa);

这里补充一点,函数声明的函数名与普通对象的变量名没有什么区别(高级编程第三版)。说明函数名可以被变量覆盖。

function aa(){
       alert(111);
}
var aa = 221;
console.log(aa);  //221

这样执行效果也是一样的。

解析:

function aa(){
    alert(111);
}
var aa;
aa = 221;
console.log(aa);

 

同时,function也是对象,说明可以在它的身上定义属性和方法。

在它身上定义的方法叫做类方法,或者叫静态方法。

只属于这个类所有。类的实例不能够调用。

例子:

function aa(){
    alert(111);
}
aa.bb = function(){
     alert(‘我是静态方法‘);
}
aa.bb();  //弹出“我是静态方法”

说明函数可以定义方法。

function aa(){
alert(111);
}
aa.bb = function(){
  alert(‘我是静态方法‘);
}
var a = new aa();  这句话弹出111,即运行了aa函数。
a.bb();   // Uncaught TypeError: a.bb is not a function(…)

说明在JS中类的实例不能调用类方法。

function aa(){
alert(111);
}
aa.bb = function(){
  alert(‘我是静态方法‘);
}
aa.c={
    cc:5
}
console.log(aa.c);   //Object {cc: 5}

给函数对象定义属性。

 

js中函数提升及var变量提示

标签:

原文地址:http://www.cnblogs.com/qianduanjingying/p/5403482.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!