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}

    给函数对象定义属性。

  • 相关阅读:
    2020去奔跑
    2020前两个月学习心得
    2020年1_2月寒假学习心得
    寒假中期考核个人总结
    Numpy、Matplotlib和pandas学习路线引导
    Python学习路线引导-Python入门基础
    2019在路上
    2020/11/28助教一周小结(第九周)
    2020/11/3助教一周小结(第五周)
    2020/10/25助教一周小结(第四周)
  • 原文地址:https://www.cnblogs.com/qianduanjingying/p/5403482.html
Copyright © 2011-2022 走看看