關於constjs作用域的信息

本文目錄一覽:

js為什麼for in可以用const

const的特點是在塊級作用域內不能重複聲明,且不能給它重新賦值(重點是塊級作用域)。for in的每一次循環都是一個塊級作用域,所以可以使用for(const a in b)的形式去遍歷對象的。但是在for循環內不可給c重新賦值。

let和const的引入會對js編程帶來哪些改變

1. let 命令

① 在js中是沒有塊級作用域的,var 聲明的變數作用域是整個函數體,而let可以起到這一作用

{ let a = 1; var b = 2; } console.log(b); // 2 console.log(a); // a is not defind

② 而let可以起到這一作用啊在js中變數和函數的聲明會提升到當前作用域最頂部執行。這樣就會出現問題。

var a = []; //函數和變數i會最先進行聲明,同時全局變數i經過for循環賦值為10 for (var i = 0; i 10; i++) { a[i] = function () { console.log(i); }; } console.log(i);//10 a[6]();//10

而使用let就解決了這個問題

for (let i = 0; i 10; i++) { a[i] = function () { console.log(i); }; } a[6](); //6

③ let不像var那樣,會發生「變數提升」現象

console.log(a); // a is not defined let a = 1;

④ let不允許在相同塊級作用域內,重複聲明同一個變數

// 報錯 { let a = 10; var a = 1; } // 報錯 { let a = 10; let a = 1; }

2. const 命令

① const也用來聲明變數,但是聲明的是常量。一旦聲明,常量的值就不能改變。

② 與let相同也不能在相同塊級作用域內重複聲明同一個變數。

③ const的作用域與let命令相同:只在聲明所在的塊級作用域內有效。

const PI = 3.1415; console.log(PI); // 3.1415 //PI = 3; // Assignment to constant variable.(不能給常量賦值) //const PI = 3.1;// Identifier ‘PI’ has already been declared

js全局和局部的作用域

樓下說的不對吧!

首先:第一個,第一行定義了一個全局的var01,再在方法里定義了一個var01,首先搞清楚什麼是var ,這是個變數聲明關鍵字,他出現在哪和你全局不全局沒有任何關係!

第一個之所以undefind是因為你將一個變數名定義兩次,這個是不允許的,undefind在這裡本質是聲明錯誤,內存中不存在,即聲明時發生錯誤,內存沒有記錄!不存在的東西js統一報錯undefind!

第二個:輸出1,是因為,js是腳本語言,在執行時按照順序載入,當執行到write時,var01的值是1,此時還沒執行到var01=0,這一步,所以先到先得,取出為1,然後在將var01賦值為0,但是此前js就已經輸出了,所以0不會被輸出!

關於全局和非全局,等你做久了你其實會發現,把全局叫做作用域會更好,他作用於誰,取決於你在何處聲明(var關鍵字),比如你在頁面的js第一行就寫一個var var01,那這個var01就只作用於這個頁面,那我是不是可以理解,所謂全局是整個程序,那我雖然定義了一個var,卻不能延伸到整個程序,那我是不是就可以推翻這個var看起來像全局,但在我的語境中其實並非全局,他只是我這個頁面的全局,對於我整個程序來說,這個頁面又是個局部!所以用作用域來解釋會更好!

如果確實需要區分的話,那你可以這樣理解

根據js 的執行順序是逐行執行的特點,那麼在js中,首先出現的var就是全局(順帶一提,function某種程度上等同var,再此與var並論!)所以簡單理解就是,方法體外的var都是這個js的全局,方法體內的都是這個方法體的全局(你沒聽錯,是這個方法體的全局!!!!!),但是,方法體是js 的全局,方法體內的var是方法的全局,而var var01的作用域又限定為方法體,所以,方法體內的var相對於js來說只能是局部.

其實這還漏了一個知識點:叫做,方法私有屬性,即:方法體內定義的任何屬性和方法都只歸其父方法所有!!!!!

理解:某個頁面的js文件理解為一個大方法,這個方法里又有其他方法,而子方法里的屬性因為只歸其父,所以父方法的父方法無權調用,父父方法若要調用只有通知其子方法,讓子方法通知其子屬性並暴露給其父父方法!

但願你聽懂了,哈利路亞!自己都繞了

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/257274.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-15 12:44
下一篇 2024-12-15 12:44

相關推薦

  • Python中set函數的作用

    Python中set函數是一個有用的數據類型,可以被用於許多編程場景中。在這篇文章中,我們將學習Python中set函數的多個方面,從而深入了解這個函數在Python中的用途。 一…

    編程 2025-04-29
  • Python中init方法的作用及使用方法

    Python中的init方法是一個類的構造函數,在創建對象時被調用。在本篇文章中,我們將從多個方面詳細討論init方法的作用,使用方法以及注意點。 一、定義init方法 在Pyth…

    編程 2025-04-29
  • Java 監控介面返回信息報錯信息怎麼處理

    本文將從多個方面對 Java 監控介面返回信息報錯信息的處理方法進行詳細的闡述,其中包括如何捕獲異常、如何使用日誌輸出錯誤信息、以及如何通過異常處理機制解決報錯問題等等。以下是詳細…

    編程 2025-04-29
  • 使用Python爬蟲獲取電影信息的實現方法

    本文將介紹如何使用Python編寫爬蟲程序,來獲取和處理電影數據。需要了解基本的Python編程語言知識,並使用BeautifulSoup庫和Requests庫進行爬取。 一、準備…

    編程 2025-04-28
  • @scope("prototype")的作用及應用

    本文將從以下幾個方面進行詳細闡述@scope(“prototype”)在編程開發中的作用和應用。 一、代碼復用 在開發中,往往會有很多地方需要復用同一個類的…

    編程 2025-04-28
  • Python中import sys的作用

    Python是一種非常強大的編程語言,它的標準庫提供了許多有用的模塊和函數。sys模塊是Python標準庫中的一個重要模塊,用於與Python解釋器和操作系統進行交互。它允許開發者…

    編程 2025-04-28
  • Python爬取網頁信息

    本文將從多個方面對Python爬取網頁信息做詳細的闡述。 一、爬蟲介紹 爬蟲是一種自動化程序,可以模擬人對網頁進行訪問獲取信息的行為。通過編寫代碼,我們可以指定要獲取的信息,將其從…

    編程 2025-04-28
  • Python配置環境變數的作用

    Python配置環境變數是為了讓計算機能夠更方便地找到Python語言及其相關工具的位置,使其可以在任意目錄下使用Python命令。當您安裝Python後,您需要進行環境變數設置,…

    編程 2025-04-28
  • 如何使用Python執行Shell命令並獲取執行過程信息

    本文將介紹如何使用Python執行Shell命令並獲取執行過程信息。我們將從以下幾個方面進行闡述: 一、執行Shell命令 Python內置的subprocess模塊可以方便地執行…

    編程 2025-04-28
  • Python實現身份信息模擬生成與查驗

    本文將從以下幾個方面對Python實現身份信息模擬生成與查驗進行詳細闡述: 一、身份信息生成 身份信息生成是指通過代碼生成符合身份信息規範的虛假數據。Python中,我們可以使用f…

    編程 2025-04-27

發表回復

登錄後才能評論