国产一区二区精品-国产一区二区精品久-国产一区二区精品久久-国产一区二区精品久久91-免费毛片播放-免费毛片基地

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 淺談JavaScript作用域

淺談JavaScript作用域

來源:千鋒教育
發布人:Yolanda
時間: 2019-01-04 15:27:00 1546586820

  什么是作用域?

  Js中的變量或者函數能夠被訪問到的代碼空間(變量或者函數有效的范圍)。

  JavaScript中的作用域

  全局作用域;

  局部作用域;

  當一個變量在函數最外層定義時,變量就在全局作用域中,在一個函數內部定義一個變量,這個變量就在局部變量中。

圖片1

  全局作用域

  最外層函數或者在其外部定義的變量具有全局作用域。

  var a = 10; //全局變量

  function foo(){ //全局函數

  console.log(a);

  }

  這個變量a就在全局作用域中,可以說成是個全局變量,這個a可以子啊認可地方訪問或修改。

  還有一點,window對象的屬性和方法具有全局作用域

  Eg:

  alert("dddddd");

  window.alert("aaaa");

  var obj = {

  name:"john",

  age:20,

  sayHello:function(x){

  console.log(x);//輸出undefined//第二次輸出1//第三次輸出aaa(要問我為什么會輸出三次,因為聲明提升的問題,請自行百度)

  }

  };

  console.log(obj.name);//輸出jogn

  obj.sayHello();

  console.log(obj.sayHello(1))//輸出undefined

  obj.sayHello("aaaaa");

  在一個函數內部聲明一個變量不用 var來定義,這個變量具有全局作用域

  function foo(){

  b = 20;

  var a = 10;

  }

  foo();

  console.log(b);

  console.log(a);//a會報錯,因為a 是一個局部變量

  局部作用域

  定義在函數中的變量就在局部作用域中。并且函數在每次調用時都有一個不同的作用域。這意味著同名變量可以用在不同的函數中。因為這些變量綁定在不同的函數中,擁有不同作用域,彼此之間不能訪問。(在一個函數顳部定義的函數或者用var定義的變量具有局部作用域)

  Eg:

  在ES5中函數去區分全局和局部的唯一的代碼塊

  if(true){

  var a = 10;

  }

  for(var i =0; i<=0; i++){

  var b = 10;

  }

  console.log(a,b);//a,b都是輸出10

  函數的形參具有局部作用域,是局部變量

  function foo(x){

  console.log(x);//輸出undefined

  }

  foo();

  console.log(x);//報錯

  補充一點塊語句

  塊級聲明包括if和switch,以及for和while循環,和函數不同,它們不會創建新的作用域。在塊級聲明中定義的變量從屬于該塊所在的作用域。

  Eg:

  if(true){

  Var name = “join”;

  }

  Console.log(name)//輸出join

  Es6中引用了let,const關鍵字,這些關鍵字可以代替var,但是和var不同的是,let和const具有塊級作用域,也就是說在塊級聲明中創建并使用時,是具有全局作用域的

  在全局作用域聲明的變量可以稱為全局變量,同理還有全局變量,和函數形參,他們所站的比重是局部變量>函數形參>全局變量

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT