javascript宣告變數的4種方法是什麼
javascript宣告變數的4種方法:1、使用「var」宣告變量,例「var a;」;2、使用「function」宣告變數,例「function Fun (num) {}」; 3、使用「let」宣告變數;4、使用「const」宣告變數。
本教學操作環境:windows7系統、ECMAScript 6版、Dell G3電腦。
宣告變數的方式
JavaScript 變數宣告的方式有以下幾種:
- ES6之前是var 和function
- ES6中新增let 和const
function 是一種宣告變數的方式?
我們來驗證一下
驗證方法一:
function repeatFun (num) { return num; } repeatFun(10); // 10 var repeatFun = 1; repeatFun(2); // Uncaught TypeError: repeatFun is not a function
這個方法是利用var可以重複宣告變量,但是會後者覆寫會覆寫前者的特點
我們來看看這裡發生來什麼事:
- 首先是宣告了一個函數,他的名字是repeatFun
- 緊接一次,得到結果為10
- 之後用var 又宣告了一次repeatFun , 並初始化為1
- 最後呼叫一次repeatFun 這個函數
- 結果就是報錯,內容: repeatFun 不是一個函數
根據執行結果我們可以推斷出在瀏覽器的記憶體中存在一個repeatFun 變量,之前是一個函數,後來被一個var 關鍵字重新聲明並初識化為1。
驗證方法二:
{ let repeatFun = 1; function repeatFun (num) { return num } } // Uncaught SyntaxError: Identifier 'repeatFun' has already been declared
第二種方法我是利用
ES6的語法:利用let 不能重複宣告的特性來證明function 也是一種宣告變量的方式
var ,let , const 的不同點:
#變數聲明提升
- ##var 有變數宣告提升的功能,可以先使用然後再聲明,反之也成立
- ##let 和const 則沒有變數宣告提升的功能,必須先宣告才能使用
var 能重複聲明,後者覆寫前者
##let 和const 則不能重複宣告- 作用域的範圍
- var 的作用域是以函數為界限let 和const 是區塊作用域
- var 可以定義全域變數和局部變量,let 和const 只能定義局部變數 const 的特殊之處
- 聲明之後不能被修改(引用型別和基本型別的表現有些地方不一樣)
#var 是有變數宣告提升的功能,可以先使用再宣告let 和const 則沒有變數宣告提升的功能,必須先宣告才能使用
- 例子一,驗證var 變數提升:
var b = a + 1; // b: NaN var a = 1; // a: 1
登入後複製首先是先宣告來一個變數b 並進行初識化,初始化的值為a 1(a 的值是多少?)
這是程式碼表面上就是做著這些事,實際上做的事情是這樣:
在每次宣告一個變數的時候,他們的宣告都是放在程式碼的最上面,而且他們都是要進行一次初始化,值為:undefined,但是賦值的位置是不會改變,
- 下面寫法同樣可以實現一樣的效果
var b; var a; b = a +1; // b: NaN a = 1; // a: 1
登入後複製let 和const 則與var 的表現則不同
範例二,驗證let 是否存在變數提升:
let b = a + 1; // Uncaught ReferenceError: a is not defined let a = 1;
在執行的時候直接拋出範圍錯誤,若這樣改一下,就沒有錯誤:
let a = 1; // a: 1 let b = a + 1; // b: 2
const 和let在變數提升方面的表現是一致
#重複聲明var 能重複聲明,後者覆蓋前者
- let 和const 則不能重複宣告範例一,驗證var 的重複宣告:
- 首先是宣告變數a ,初始化為1緊接著再次宣告變數a, 初始化為2
var a = 1; var a = 2; var b = a + 1; // 3
登入後複製- 最後宣告變數b , 它初始化值是a 1 範例二,驗證let 的重複宣告:
let a = 1; let a = 2; // Uncaught SyntaxError: Identifier 'a' has already been declared
登入後複製var a = 1; let a = 2; //Uncaught SyntaxError: Identifier 'a' has already been declared
登入後複製
const 和let 在重複宣告方面的表現是一致
#var 的作用域是以函數為界限let 和const 是區塊作用域
- var 可以定義全域變數和局部變量,let 和const 只能定義局部變數 封裝一個階乘函數來舉例,沒有使用尾遞歸,就是使用for和if 的搭配實作
- 範例一,階乘函數驗證作用域範圍:
var num = 5; function factorial(num) { var result = 1,resultValue = 0; for (let i = num - 1; i >= 1; i--) { if (i === num - 1) { resultValue = num * i; }else{ resultValue = num * i / num; } result *= resultValue; } // i 是用 let 进行定义它的作用域仅仅被限制在 for 循环的区域内 // i++;// Uncaught ReferenceError: i is not defined return result; } // result 是用 var 进行定义,他的活动区域在 factorial 函数内 // result++; // var的作用域.html:34 Uncaught ReferenceError: result is not defined factorial(num); // 120
範例二,驗證const 的作用域:
{ const NUM_1 = 10; } let b = NUM_1 + 1; // Uncaught ReferenceError: NUM_1 is not defined
範例三,驗證var 可以定義全域變量,let 和const 只能定義局部變數
// 可以挂载到全局作用域上 // var name = 'window scoped'; let name = 'let scoped'; //是不挂载到全局作用域中 let obj = { name: 'myName', sayName () { return function () { console.log(this.name); // 打印出来为空 }; } } obj.sayName()(); console.log(window); //name 这个属性的值没有,如下图
若这样改一下就可以得到我们想要的值:
- 把用 var 定义的 name 的代码取消注释,把用 let 定义的 name 的代码注释。
这个同时也涉及到新问题 this 的指向。后面的文章再详细举例验证
const 的特殊之处
const 与 let , var 其实还是有些地方不一样的
例子1:验证 const 的特殊之处(一)<br/>
const NUM = 100; NUM = 1000; // Uncaught TypeError: Assignment to constant variable
- 经过 const 方式进行声明,之后赋值完毕,则不可以进行改变,否则会报错
但是也有例外
例子二:验证 const 的特殊之处(二)
const obj = { name: 'xiaoMing', sayName () { return this.name } }; obj.sayName(); // xiaoMing obj.name = 'xiaoHong'; obj.sayName(); // xiaoHong
- 使用 const 首先声明一个变量 obj , 并且这个变量指向我们在内存中创建的对象,你会发现我们改变里面的属性是没有任何问题
若这样改一下: <br/> 例子三:验证 const 的特殊之处(三)
const obj = { name:'xiaoMing', sayName(){ return this.name } }; obj = {}; // Uncaught TypeError: Assignment to constant variable
- 若改变该变量的指向的对象,则就会报错。这种错误和 「 验证 const 的特殊之处(一)」的错误是一样的
更多编程相关知识,请访问:编程视频!!
以上是javascript宣告變數的4種方法是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

如何利用JavaScript和WebSocket實現即時線上點餐系統介紹:隨著網路的普及和技術的進步,越來越多的餐廳開始提供線上點餐服務。為了實現即時線上點餐系統,我們可以利用JavaScript和WebSocket技術。 WebSocket是一種基於TCP協定的全雙工通訊協議,可實現客戶端與伺服器的即時雙向通訊。在即時線上點餐系統中,當使用者選擇菜餚並下訂單

如何使用WebSocket和JavaScript實現線上預約系統在當今數位化的時代,越來越多的業務和服務都需要提供線上預約功能。而實現一個高效、即時的線上預約系統是至關重要的。本文將介紹如何使用WebSocket和JavaScript來實作一個線上預約系統,並提供具體的程式碼範例。一、什麼是WebSocketWebSocket是一種在單一TCP連線上進行全雙工

JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

用法:在JavaScript中,insertBefore()方法用於在DOM樹中插入一個新的節點。這個方法需要兩個參數:要插入的新節點和參考節點(即新節點將要插入的位置的節點)。

JavaScript是一種廣泛應用於Web開發的程式語言,而WebSocket則是一種用於即時通訊的網路協定。結合二者的強大功能,我們可以打造一個高效率的即時影像處理系統。本文將介紹如何利用JavaScript和WebSocket來實作這個系統,並提供具體的程式碼範例。首先,我們需要明確指出即時影像處理系統的需求和目標。假設我們有一個攝影機設備,可以擷取即時的影像數
