日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

在 JavaScript 中,范圍 定義我們?nèi)绾我约霸诖a的哪個(gè)部分訪問(wèn)變量和函數(shù)。簡(jiǎn)單來(lái)說(shuō),范圍可以幫助我們提高代碼的安全性和可讀性。因此,我們只能在其作用域內(nèi)訪問(wèn)變量和函數(shù),而不能在其外部訪問(wèn)。

我們將在本教程中討論多種類型的范圍。

JavaScript 中的全局作用域

全局定義的變量和函數(shù)意味著在具有全局范圍的所有塊和函數(shù)之外。我們可以在代碼中的任何位置訪問(wèn)具有全局作用域的所有變量和函數(shù)。

語(yǔ)法

用戶可以按照下面的語(yǔ)法來(lái)定義具有全局作用域的變量。

var global = 30;
function func() {
   var b = global; // global variable has a global scope so we can access it inside the function.
}

登錄后復(fù)制

這里,全局變量global是在任何函數(shù)之外聲明的,因此它具有全局作用域。然后通過(guò)聲明局部變量 b 并將全局變量 global 的值賦給它,在函數(shù) func 內(nèi)部訪問(wèn)它。

示例

在此示例中,我們定義了具有全局作用域的全局變量。我們?cè)诿麨?func() 的函數(shù)內(nèi)訪問(wèn)它并從函數(shù)返回它的值。

在輸出中,我們可以觀察到 func() 函數(shù)返回 20,這是全局變量的值。

<html>
   <body>
      <h2> Defining a variable with <i> global </i> scope </h2>
      <div id = "output"> </div>
      <script>
         let output = document.getElementById("output");
         var global = 20;
         function func() {
            return global;
         }
         output.innerHTML += "The value of variable named global: " + func();
      </script>
   </body>
</html>

登錄后復(fù)制

本地/函數(shù)作用域

局部作用域也稱為函數(shù)作用域。函數(shù)內(nèi)部定義的變量具有函數(shù)作用域/局部作用域。我們無(wú)法訪問(wèn)函數(shù)外部的變量。

語(yǔ)法

您可以按照下面的語(yǔ)法來(lái)了解變量和函數(shù)的局部范圍 –

function func() {
   var local_var = "Hi!";
}
console.log(local_var); // this will raise an error

登錄后復(fù)制

此處 local_varfunc() 函數(shù)內(nèi)部有一個(gè)函數(shù)作用域,因此我們無(wú)法在其外部訪問(wèn)它。

示例

在此示例中,我們創(chuàng)建了 func() 函數(shù)。在 func() 函數(shù)內(nèi)部,我們定義了具有局部作用域的 local_var 變量,這意味著我們只能在 func() 函數(shù)內(nèi)部訪問(wèn)它。我們可以看到,如果我們嘗試在 func() 函數(shù)之外訪問(wèn) local_var ,則會(huì)引發(fā)錯(cuò)誤,因?yàn)?local_var 未定義。要查看此錯(cuò)誤,您需要打開(kāi)控制臺(tái)。

<html>
   <body>
      <h2>Defining a variable with <i> function </i> scope</h2>
      <div id = "output"> </div>
      <script>
         let output = document.getElementById("output");
         function func() {
            let local_var = 20;
            output.innerHTML += "The value of local_var inside fucntion: " + local_var + "<br/>";
         }
         func();
         // the local_var can't be accessed here
         output.innerHTML += "The value of local_var outside fucntion: " +local_var+ "<br/>";
      </script>
   </body>
<html>

登錄后復(fù)制

塊范圍

在 JavaScript 中,我們可以使用兩個(gè)大括號(hào)({ ….. }) 來(lái)定義。塊作用域表示我們?cè)谔囟▔K內(nèi)定義的任何變量只能在塊內(nèi)訪問(wèn),而不能在塊外訪問(wèn)。使用 letconst 關(guān)鍵字聲明的變量具有塊作用域。

語(yǔ)法

用戶可以按照下面的語(yǔ)法來(lái)了解變量的塊作用域。

{
   let block_var = 6707;
   // block_var accessible here
}

// we can't access the block_var variable here.

登錄后復(fù)制

在這里,我們無(wú)法訪問(wèn)大括號(hào)之外的 block_var,因?yàn)槲覀円呀?jīng)在特定塊內(nèi)定義了它。

注意 – 使用var關(guān)鍵字聲明的變量沒(méi)有塊作用域。

示例

在這個(gè)例子中,我們使用花括號(hào)定義了一個(gè)塊并定義了一個(gè)變量num。我們嘗試在塊內(nèi)部和外部訪問(wèn)這個(gè)變量。您可以觀察到,我們無(wú)法訪問(wèn)大括號(hào)之外的 num,因?yàn)槲覀円呀?jīng)在塊內(nèi)定義了它。

<html>
   <body>
      <h2>Defining the variable with <i> block </i> scope </h2>
      <div id="output"></div>
      <script>
         let output = document.getElementById("output");
         {
            const num = 200;
            output.innerHTML += "Value of num inside the block: " + num + "<br>";
         }
         // num is accessible here - outside the block
         output.innerHTML += "value of num outside the block: " + num + "<br>";
      </script>
   </body>
</html>

登錄后復(fù)制

詞法范圍

詞法作用域與靜態(tài)作用域相同。在 JavaScript 中,當(dāng)我們執(zhí)行嵌套函數(shù)并嘗試訪問(wèn)嵌套函數(shù)內(nèi)的任何變量時(shí),它會(huì)首先在本地上下文中找到該變量。如果它在嵌套函數(shù)的本地上下文中找不到變量,它會(huì)嘗試在函數(shù)執(zhí)行的父上下文中查找,依此類推。最后,如果在全局上下文中沒(méi)有找到該變量,則認(rèn)為該變量未定義。

語(yǔ)法

用戶可以按照下面的語(yǔ)法來(lái)理解詞法范圍。

var parent_var = 343;
var test = function () {
   console.log(parent_var);
};
test();

登錄后復(fù)制

在上面的語(yǔ)法中,我們從函數(shù)執(zhí)行的范圍訪問(wèn)了parent_var。由于函數(shù)log()不會(huì)在局部作用域中找到parent_var,因此它將嘗試在調(diào)用該函數(shù)的作用域(即全局作用域)中查找。

示例

在這個(gè)例子中,我們?cè)诶锩娑x了test()函數(shù)和nested()函數(shù)。此外,我們正在nested()函數(shù)內(nèi)訪問(wèn)global_var和parent_var。由于 JavaScript 不會(huì)在本地上下文中找到這兩個(gè)變量,因此它將首先在nested()函數(shù)的執(zhí)行上下文中查找,然后在test()函數(shù)的執(zhí)行上下文中查找。

<html>
   <body>
      <h2>Defining the variables with <i> lexical </i> scope</h2>
      <div id="output"></div>
      <script>
         let output = document.getElementById("output");
         var global_var = 576505;
         var test = function () {
            var parent_var = 343;
            var nested = function () {
               output.innerHTML += "The value of parent_var: " + parent_var + "<br/>";
               output.innerHTML += "The value of global_var: " + global_var + "<br/>";
            };
            nested();
         };
         test();
      </script>
   </body>
</html>

登錄后復(fù)制

作用域鏈

正如作用域鏈一詞所暗示的那樣,它是一個(gè)作用域鏈。例如,假設(shè)我們?cè)诤瘮?shù)內(nèi)部定義了嵌套函數(shù)。在這種情況下,它可以擁有其局部作用域,并且嵌套函數(shù)內(nèi)部聲明的變量無(wú)法在外部函數(shù)中訪問(wèn)。

因此,我們正在創(chuàng)建范圍鏈;這就是為什么我們稱其為作用域鏈。

語(yǔ)法

用戶可以按照下面的語(yǔ)法來(lái)了解作用域鏈。

function outer() {
   function inner() {
      // inner’s local scope.
      
      // we can access variables defined inside the outer() function as inner is inside the local scope of outer
   }
   
   // variables defined in the inner() function, can’t be accessible here.
}

登錄后復(fù)制

示例

在這個(gè)例子中,inner()函數(shù)位于outer()函數(shù)的作用域內(nèi),這意味著我們不能在outer()函數(shù)之外調(diào)用inner()函數(shù)。 inner() 函數(shù)在outer() 函數(shù)內(nèi)部創(chuàng)建作用域鏈。

<html>
   <body>
      <h2>Scope Chain in JavaScript </i></h2>
      <div id="output"></div>
      <script>
         let output = document.getElementById("output");
         function outer() {
            var emp_name = "Shubham!";
            function inner() {
               var age = 22;
               output.innerHTML += ("The value of the emp_name is " + emp_name) +"<br/>";
               output.innerHTML += "The value of the age is " + age;
            }
            inner();
            
            // age can't be accessible here as it is the local scope of inner
         }
         outer();
      </script>
   </body>
</html>

登錄后復(fù)制

在本教程中,我們討論了 JavaScript 中的作用域和作用域鏈。我們討論了全局、局部/函數(shù)、塊和詞法作用域。在上一節(jié)中,我們了解了作用域鏈在 Javascript 中的工作原理。

以上就是解釋 JavaScript 中的作用域和作用域鏈的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注www.92cms.cn其它相關(guān)文章!

分享到:
標(biāo)簽:javascript 作用 解釋
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定