zoukankan      html  css  js  c++  java
  • js中函数提升及var变量提示

    其中,在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}

    给函数对象定义属性。

  • 相关阅读:
    HTML中ID与NAME的区别
    三层架构的学习感悟(二)
    linux svn安装和配置,不结合apache
    _dopostback回发后台的局限
    ASP.NET 服务器端控件响应客户端事件
    linux centos 下面httpd支持的svn 服务器端安装
    最简单的html tab选项卡
    VC2010 控件的事件窗口面板空白解决办法
    记录一次低版本手机h5页面不能进行跳转
    设计模式的理解
  • 原文地址:https://www.cnblogs.com/qianduanjingying/p/5403482.html
Copyright © 2011-2022 走看看