亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JS中創(chuàng)建函數(shù)的三種方式及區(qū)別

 更新時間:2016年03月13日 12:59:26   投稿:hebedich  
這篇文章主要介紹了js函數(shù)的多種定義方法與其區(qū)別,非常的詳細,有需要的小伙伴可以參考下

1.函數(shù)聲明

function sum1(n1,n2){
    return n1+n2;
  };

2.函數(shù)表達式,又叫函數(shù)字面量

var sum2=function(n1,n2){
    return n1+n2;
};

兩者的區(qū)別:解析器會先讀取函數(shù)聲明,并使其在執(zhí)行任何代碼之前可以訪問;而函數(shù)表達式則必須等到解析器執(zhí)行到它所在的代碼行才會真正被解釋執(zhí)行。

自執(zhí)行函數(shù)嚴格來說也叫函數(shù)表達式,它主要用于創(chuàng)建一個新的作用域,在此作用域內(nèi)聲明的變量,不會和其它作用域內(nèi)的變量沖突或混淆,大多是以匿名函數(shù)方式存在,且立即自動執(zhí)行。

(function(n1,n2){
    console.log (n1+n2)
})(1,3);//4

另外幾種自執(zhí)行函數(shù):

  //可用來傳參
  (function(x,y){
    console.log(x+y);
  })(2,3);

  //帶返回值
  var sum=(function(x,y){
    return x+y;
  })(2,3);
  console.log(sum);

  ~function(){
    var name='~'
    console.log(name);
  }();

  !function(){
    var name='!'
    console.log(name);
  }();

  ;(function(){
    var name=';'
    console.log(name);
  })();

  -function(){
    var name='-'
    console.log(name);
  }();

  //逗號運算符
  1,function(){
    var name=',';
    console.log(name);
  }();

  //異或
  1^function(){
    var name='^';
    console.log(name);
  }();

  //比較運算符
  1>function(){
    var name='>';
    console.log(name);
  }();

  ~+-!(function(){
    var name='~+-!';
    console.log(name);
  })();

  ~!(function(){
    var name='~!';
    console.log(name);
  })();

  (function(){
    var name='call';
    console.log(name);
  }).call();

  (function(){
    var name='apply';
    console.log(name);
  }).apply();

3.函數(shù)構(gòu)造法,參數(shù)必須加引號

var sum3=new Function('n1','n2','return n1+n2');
console.log(sum3(2,3));//5

從技術(shù)角度講,這是一個函數(shù)表達式。一般不推薦用這種方法定義函數(shù),因為這種語法會導(dǎo)致解析兩次代碼(第一次是解析常規(guī)ECMAScript代碼,第二次是解析傳入構(gòu)造函數(shù)中的字符串),從而影響性能。

var name='haoxl';
  function fun(){
    var name='lili';
    return new Function('return name');//不能獲取局部變量
  }
 console.log(fun()());//haoxl

 Function()構(gòu)造函數(shù)每次執(zhí)行時都會解析函數(shù)主體,并創(chuàng)建一個新的函數(shù)對象,所以當(dāng)在一個循環(huán)或頻繁執(zhí)行的函數(shù)中調(diào)用Function()構(gòu)造函數(shù)效率是非常低的。而函數(shù)字面量卻不是每次遇到都會重新編譯的,用Function()構(gòu)造函數(shù)創(chuàng)建一個函數(shù)時并不遵循典型的作用域,它一直把它當(dāng)作是頂級函數(shù)來執(zhí)行。

相關(guān)文章

最新評論