国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁(yè) web前端 js教程 掌握 JavaScript 中的作用域和詞法作用域

掌握 JavaScript 中的作用域和詞法作用域

Dec 18, 2024 am 01:49 AM

Mastering Scope and Lexical Scope in JavaScript

JavaScript 中的作用域和詞法作用域

理解範(fàn)圍詞法範(fàn)圍是寫(xiě)出高效且無(wú)錯(cuò)誤的JavaScript程式碼的基礎(chǔ)。這些概念規(guī)定了變數(shù)的存取方式以及它們?cè)诔淌酱a中的可用位置。


1. JavaScript 中的作用域

Scope 指的是目前執(zhí)行的上下文,它決定了變數(shù)的可見(jiàn)性和可訪問(wèn)性。 JavaScript 有三種類型的作用域:

A.塊範(fàn)圍

  • 用 let 和 const 宣告的變數(shù)是區(qū)塊作用域的,這表示它們只能在定義它們的區(qū)塊內(nèi)存取。
  • 在 ES6 中引入。

範(fàn)例

{
  let a = 10;
  const b = 20;
  console.log(a, b); // Output: 10, 20
}
console.log(a); // Error: a is not defined

B.功能範(fàn)圍

  • 用 var 宣告的變數(shù)是函數(shù)作用域的。它們可以在聲明它們的整個(gè)函數(shù)中存取。
  • 不尊重塊邊界。

範(fàn)例

function testFunctionScope() {
  if (true) {
    var x = 10; // Function-scoped
  }
  console.log(x); // Output: 10
}
testFunctionScope();

C.全球範(fàn)圍

  • 在任何函數(shù)或區(qū)塊之外宣告的變數(shù)都位於全域範(fàn)圍內(nèi),並且可以在程式中的任何位置存取。

範(fàn)例

var globalVar = "I am global";
console.log(globalVar); // Output: I am global

2.詞彙範(fàn)圍

詞法作用域表示變數(shù)的作用域由其在原始碼中的位置決定。函數(shù)使用定義時(shí)的作用域鏈執(zhí)行,而不是呼叫時(shí)的作用域鏈。

A.範(fàn)圍鏈

作用域鍊是 JavaScript 用來(lái)解析變數(shù)參考的作用域?qū)哟谓Y(jié)構(gòu)。如果在目前作用域中沒(méi)有找到變量,它將在外部作用域中查找,直到到達(dá)全域作用域。

範(fàn)例

function outer() {
  let outerVar = "I'm outer";

  function inner() {
    console.log(outerVar); // Accesses the outer scope
  }

  inner();
}
outer();
// Output: I'm outer

B.巢狀函數(shù)

由於詞法作用域,內(nèi)部函數(shù)可以存取其外部函數(shù)中的變數(shù)。

範(fàn)例

function outerFunction() {
  let outerVariable = "Outer";

  function innerFunction() {
    let innerVariable = "Inner";
    console.log(outerVariable); // Outer
    console.log(innerVariable); // Inner
  }

  innerFunction();
}
outerFunction();

3.實(shí)際範(fàn)例

A.存取外部作用域變數(shù)

function createMultiplier(multiplier) {
  return function (value) {
    return value * multiplier; // Accesses 'multiplier' from outer scope
  };
}

const double = createMultiplier(2);
console.log(double(5)); // Output: 10

B.閉包中的詞法範(fàn)圍

閉包依賴詞法作用域來(lái)記住外在環(huán)境中的變數(shù)。

範(fàn)例

function outerFunction() {
  let count = 0;
  return function () {
    count++;
    console.log(count);
  };
}

const counter = outerFunction();
counter(); // Output: 1
counter(); // Output: 2

4.範(fàn)圍的常見(jiàn)錯(cuò)誤

A.忘記 let 和 const

未使用 let、const 或 var 宣告的變數(shù)將成為全域變數(shù)。

{
  let a = 10;
  const b = 20;
  console.log(a, b); // Output: 10, 20
}
console.log(a); // Error: a is not defined

B.使用 var 塊作用域

在區(qū)塊內(nèi)使用 var 會(huì)導(dǎo)致意想不到的結(jié)果。

function testFunctionScope() {
  if (true) {
    var x = 10; // Function-scoped
  }
  console.log(x); // Output: 10
}
testFunctionScope();

C.影子

在巢狀作用域中宣告的變數(shù)可以隱藏(覆蓋)外部作用域中的變數(shù)。

var globalVar = "I am global";
console.log(globalVar); // Output: I am global

5.範(fàn)圍與詞法範(fàn)圍的差異

Scope Lexical Scope
Refers to the context in which variables are accessible. Refers to how the location of variables in the code determines scope.
Can be global, block, or function. Depends on the structure of the code when it is written.
Dynamic during runtime. Fixed during code definition.
範(fàn)圍
詞法範(fàn)圍

標(biāo)題> 指的是可以存取變數(shù)的上下文。 指的是程式碼中變數(shù)的位置如何決定範(fàn)圍。 可以是全域、區(qū)塊或函數(shù)。 取決於編寫(xiě)程式碼時(shí)的結(jié)構(gòu)。 運(yùn)行時(shí)動(dòng)態(tài)。 在程式碼定義期間修復(fù)。 表>
    6.最佳實(shí)務(wù)
使用let和const
function outer() {
  let outerVar = "I'm outer";

  function inner() {
    console.log(outerVar); // Accesses the outer scope
  }

  inner();
}
outer();
// Output: I'm outer
: 始終使用 let 和 cons 以避免意外的全域變數(shù)。

  1. 最小化全域變數(shù)
  2. :
  3. 全域變數(shù)可能會(huì)導(dǎo)致命名衝突。將程式碼封裝在函數(shù)或模組中。


    理解詞彙範(fàn)圍
  4. :
利用閉包和詞法作用域來(lái)寫(xiě)出更清晰、更有效率的程式碼。

    總結(jié)
  • 作用域定義了變數(shù)可以存取的位置,有全域、區(qū)塊、函數(shù)三種型別。
  • 詞法作用域
  • 確保函數(shù)總是使用定義它的作用域。

掌握這些概念對(duì)於除錯(cuò)和編寫(xiě)有效的 JavaScript 程式碼至關(guān)重要。

嗨,我是 Abhay Singh Kathayat!

我是一名全端開(kāi)發(fā)人員,擁有前端和後端技術(shù)的專業(yè)知識(shí)。我使用各種程式語(yǔ)言和框架來(lái)建立高效、可擴(kuò)展且用戶友好的應(yīng)用程式。 請(qǐng)隨時(shí)透過(guò)我的商務(wù)電子郵件與我聯(lián)繫:kaashshorts28@gmail.com。

以上是掌握 JavaScript 中的作用域和詞法作用域的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門(mén)話題

JavaScript與Java:您應(yīng)該學(xué)到哪種語(yǔ)言? JavaScript與Java:您應(yīng)該學(xué)到哪種語(yǔ)言? Jun 10, 2025 am 12:05 AM

javascriptisidealforwebdevelogment,whilejavasuitslarge-scaleapplicationsandandandroiddevelopment.1)javascriptexceleatingingingingingingingbeatingwebexperienceswebexperienceswebexperiencesandfull-stackdeevermentwithnode.js.2)

在JavaScript中使用哪些評(píng)論符號(hào):一個(gè)明確的解釋 在JavaScript中使用哪些評(píng)論符號(hào):一個(gè)明確的解釋 Jun 12, 2025 am 10:27 AM

在JavaScript中,選擇單行註釋(//)還是多行註釋(//)取決於註釋的目的和項(xiàng)目需求:1.使用單行註釋進(jìn)行快速、內(nèi)聯(lián)的解釋;2.使用多行註釋進(jìn)行詳細(xì)的文檔說(shuō)明;3.保持註釋風(fēng)格的一致性;4.避免過(guò)度註釋;5.確保註釋與代碼同步更新。選擇合適的註釋風(fēng)格有助於提高代碼的可讀性和可維護(hù)性。

JavaScript評(píng)論的最終指南:增強(qiáng)代碼清晰度 JavaScript評(píng)論的最終指南:增強(qiáng)代碼清晰度 Jun 11, 2025 am 12:04 AM

是的,javascriptcommentsarenectary和shouldshouldshouldseffectional.1)他們通過(guò)codeLogicAndIntentsgudedepleders,2)asevitalincomplexprojects,和3)handhanceClaritywithOutClutteringClutteringThecode。

Java vs. JavaScript:清除混亂 Java vs. JavaScript:清除混亂 Jun 20, 2025 am 12:27 AM

Java和JavaScript是不同的編程語(yǔ)言,各自適用於不同的應(yīng)用場(chǎng)景。 Java用於大型企業(yè)和移動(dòng)應(yīng)用開(kāi)發(fā),而JavaScript主要用於網(wǎng)頁(yè)開(kāi)發(fā)。

JavaScript評(píng)論:簡(jiǎn)短說(shuō)明 JavaScript評(píng)論:簡(jiǎn)短說(shuō)明 Jun 19, 2025 am 12:40 AM

JavascriptconcommentsenceenceEncorenceEnterential gransimenting,reading and guidingCodeeXecution.1)單inecommentsareusedforquickexplanations.2)多l(xiāng)inecommentsexplaincomplexlogicorprovideDocumentation.3)

掌握J(rèn)avaScript評(píng)論:綜合指南 掌握J(rèn)avaScript評(píng)論:綜合指南 Jun 14, 2025 am 12:11 AM

評(píng)論arecrucialinjavascriptformaintainingclarityclarityandfosteringCollaboration.1)heelpindebugging,登機(jī),andOnderStandingCodeeVolution.2)使用林格forquickexexplanations andmentmentsmmentsmmentsmments andmmentsfordeffordEffordEffordEffordEffordEffordEffordEffordEddeScriptions.3)bestcractices.3)bestcracticesincracticesinclud

JavaScript數(shù)據(jù)類型:深度潛水 JavaScript數(shù)據(jù)類型:深度潛水 Jun 13, 2025 am 12:10 AM

JavaScripthasseveralprimitivedatatypes:Number,String,Boolean,Undefined,Null,Symbol,andBigInt,andnon-primitivetypeslikeObjectandArray.Understandingtheseiscrucialforwritingefficient,bug-freecode:1)Numberusesa64-bitformat,leadingtofloating-pointissuesli

JavaScript與Java:開(kāi)發(fā)人員的全面比較 JavaScript與Java:開(kāi)發(fā)人員的全面比較 Jun 20, 2025 am 12:21 AM

JavaScriptIspreferredforredforwebdevelverment,而Javaisbetterforlarge-ScalebackendsystystemsandSandAndRoidApps.1)JavascriptexcelcelsincreatingInteractiveWebexperienceswebexperienceswithitswithitsdynamicnnamicnnamicnnamicnnamicnemicnemicnemicnemicnemicnemicnemicnemicnddommanipulation.2)

See all articles