zoukankan      html  css  js  c++  java
  • 函数的创建方式小总结

    1、 函数声明(静态的)
      
    function static() {}

    2、 函数表达式(函数字面量)
      var static = function() {}

    3、 函数构造法,参数必须加引号(动态的,匿名的)
      var static = new Function(‘n1’,’n2’);

    1、2两者的区别:解析器会先读取函数声明,并使其在执行任何代码之前可以访问;而函数表达式则必须等到解析器执行到它所在的代码行才会真正被解释执行。

    自执行函数严格来说也叫函数表达式,它主要用于创建一个新的作用域,在此作用域内声明的变量,不会和其它作用域内的变量冲突或混淆,大多是以匿名函数方式存在,且立即自动执行。
    (function(n1,n2){
    console.log (n1+n2)
    })(1,2);//3

    第3种方式从技术角度讲,这是一个函数表达式。一般不推荐用这种方法定义函数,因为这种语法会导致解析两次代码(第一次是解析常规ECMAScript代码,第二次是解析传入构造函数中的字符串),从而影响性能。
    Function()构造函数每次执行时都会解析函数主体,并创建一个新的函数对象,所以当在一个循环或频繁执行的函数中调用Function()构造函数效率是非常低的。而函数字面量却不是每次遇到都会重新编译的,用Function()构造函数创建一个函数时并不遵循典型的作用域,它一直把它当作是顶级函数来执行。

    This的指向

    1、 在全局作用域下:this指window对象;
    2、 在函数中的四种情况:
      1、 函数声明中:this 表示全局作用域,等价于window
      2、 函数表达式中(对象方法调用):指当前对象
      3、 构造函数中:指向实例对象,新创建出来的对象
      4、 使用bind()/apply()/call()调用:this表示传入的第一个参数

    理解函数上下文
    //定义一个对象
    var context = {
    text:”aaa”,
    updown: functiotn() {
    console.log(this); //打印上下文
    return this.text;
    }
    }
    //当通过这个对象来调用函数时,该对象就是此次条用上下文(context),也就是该函数的this值
    context.updown();
    如果函数挂载在一个对象上,作为对象的一个属性,就称他为对象的方法。当通过这个对象来调用函数时,该对象就是此次调用上下文(context),也就是该函数的this的值。

    /***************************************/
    基于对象: 上下文(context)> this > 挂载着变量与函数的对象
    给予函数: 作用域 > 函数定义时决定的 > 作用于函数
  • 相关阅读:
    传Windows 7 RC泄露版中含有木马 狼人:
    金山:3G时代 上网安全面临更大挑战 狼人:
    McAfee:僵尸网新威胁远甚Conficker 狼人:
    安全专家:70GB财务数据被僵尸网络盗窃 狼人:
    卡巴斯基中国地区4月恶意软件排行榜 狼人:
    MPAA组织遭遇尴尬 网页存在XSS攻击漏洞 狼人:
    股市回暖 网上炒股安全风险骤增 狼人:
    微软首次针对Windows 7推杀毒软件 年内将推出 狼人:
    黑客数度入侵美国联邦航空总署飞航控制系统 狼人:
    瑞星对Windows7捆绑杀毒软件等消息的回应 狼人:
  • 原文地址:https://www.cnblogs.com/Angxf/p/10966455.html
Copyright © 2011-2022 走看看