uniapp 获取到js文件var一个变量怎么获取到这个变量值_浅析Js中const,let,var的区别及作用域...
理解:let變量的作用域只能在當前函數中
js中const,let,var的區別及作用域_lianzhang861的博客-CSDN博客?blog.csdn.net全局作用域中,用 const 和 let 聲明的變量不在 window 上,那到底在哪里?如何去獲取??blog.csdn.net早期的JavaScript中,聲明變量只能使用var關鍵字定義變量,并沒有定義常量的功能。通過var關鍵字定義的變量,其作用域只能函數級或是全局作用域,并沒有塊級作用域ES6(ECMAScript 2015)對這一問題做了改善,增加了用于定義塊級變量的let關鍵字和用于定義常量的const關鍵字
JavaScript let 和 const
ECMAScript 2015(ECMAScript 6)
ES2015(ES6) 新增加了兩個重要的 JavaScript 關鍵字: let 和 const。
let 聲明的變量只在 let 命令所在的代碼塊內有效。
const 聲明一個只讀的常量,一旦聲明,常量的值就不能改變。
在 ES6 之前,JavaScript 只有兩種作用域: 全局變量 與 函數內的局部變量。
- 1.1 語法及說明
- 1.2 使用及特點
- 2.1 語法及說明
- 2.2 與var的異同
1. var定義變量
1.1 語法及說明
var關鍵字用于聲明一個或多個變量,聲明多個變量時使用逗號(,)分隔,聲明變量的同時可以對其初始化。
語法法結構如下:
var varname1 [= value1 [, varname2 [, varname3 ... [, varnameN]]]];- varname1…varnameN - 變更名。可以是任何合法的標識符。
- value1…valueN - 初始化值。可選??梢允侨魏魏戏ǖ谋磉_式。
使用var聲明變量時,聲明的變量作用域是在當前位置的上下文件中:函數的內部(聲明在函數內)或者全局(聲明在函數外)。
1.2 使用及特點
使用var定義的變量有以下特點:
變量聲明提升
無論在代碼的任何位置聲明變量,執行引擎都會在任何代碼執行之前處理。由于這個原因,所以在代碼中的任意位置聲明變量與在代碼開頭聲明變量是等效的。
這意味著我們可以在定義變量之前使用,這個行為叫做'hoisting',也就是把所有的變量聲明移動到函數或者全局代碼的開頭位置。
hoist = 'http://itbilu.com'; var hoist;// 可以理解為: var hoist; hoist = 'http://itbilu.com';注意:雖然變量聲明提升讓我們可以先使用再定義變量,但建議總是先定義再使用變量,這樣可以讓變量的作用域更加清晰。
聲明與未聲名變量的區別
未聲明的變量會被添加一個全局作用域,而聲明變量作用域是當前上下文:
function x() {y = 1; // 在嚴格模式下會拋出ReferenceErrorvar z = 2; } x();console.log(y); // '1' console.log(z); // ReferenceError: z is not defined聲明變量在任何代碼執行前創建,而未聲明的變量只有在執行賦值操作的時候才會被創建:
console.log(a); // 拋出ReferenceError。 console.log('still going...'); // 不會執行 var a; console.log(a); // "undefined"或""(不同執行引擎的實現不同) console.log('still going...'); // 'still going...'聲明變量是不可配置屬性,而未聲明變量是可配置的:
var a = 1; b = 2;delete this.a; // 在嚴格模式下拋出TypeError,非嚴格模式下執行失敗且無任何提示 delete this.b;console.log(a, b); // 拋出ReferenceError,'b'屬性已經被刪除以上三點是聲明與未聲明變量區別,但錯誤表現是不可預知的。而在嚴格模型下,使用未賦值的變量會拋出異常,推薦總是先定義(聲明)再使用變量。
全局作用域與函數作用域
函數內部聲明的變量只能在函數內部使用,函數外部聲明的變量可以全局使用:
var x = 0;function f(){var x = 1, y = 1; } f();console.log(x); // 0 console.log(y); // ReferenceError: y is not defined2. let定義塊級變量
2.1 語法及說明
let用于定義塊級變量,其語法結構類似于var:
let varname1 [= value1 [, varname2 [, varname3 ... [, varnameN]]]];var聲明的變量是函數級的或者是全局的,而let用于聲明塊級作用域。
如,使用let聲明一個塊級變量:
if (x > y) {let gamma = 12.7 + y;i = gamma * x; }2.2 與var的異同
let與var的區別主要體現在作用域上,當在子代碼塊中使用中其聲明的是塊級變量,而var聲明的是全局變量:
var a = 5; var b = 10;if (a === 5) {let a = 4; // if 塊級作用域var b = 1; // 函數級作用域console.log(a); // 4console.log(b); // 1 } console.log(a); // 5 console.log(b); // 1在函數或程序頂層使用時,let與var沒有什么區別:
var x = 'global'; let y = 'global'; console.log(this.x); // 'global' console.log(this.y); // 'global'3. const定義常量
const用于聲明一個或多個常量,聲明時必須進行初始化,且初始化后值不可再修改:
const name1 = value1 [, name2 = value2 [, ... [, nameN = valueN]]];const定義常量與使用let定義變量十分相似:
- 二者都是塊級作用域
- 都不能和它所在作用域內的其他變量或函數擁有相同的名稱
兩者還有以下兩點區別:
- const聲明的常量必須初始化,而let聲明的變量不用
- 常量的值不能通過再賦值改變,也不能再次聲明。而變量值可以修改
通過 const 定義的變量與 let 變量類似,但不能重新賦值:
實例
const PI = 3.141592653589793; PI = 3.14; // 會出錯 PI = PI + 10; // 也會出錯塊作用域
在塊作用域內使用 const 聲明的變量與 let 變量相似。
在本例中,x 在塊中聲明,不同于在塊之外聲明的 x:
實例
var x = 10; // 此處,x 為 10 { const x = 6;// 此處,x 為 6 } // 此處,x 為 10在聲明時賦值
JavaScript const 變量必須在聲明時賦值:
不是真正的常數
關鍵字 const 有一定的誤導性。
它沒有定義常量值。它定義了對值的常量引用。
因此,我們不能更改常量原始值,但我們可以更改常量對象的屬性。
原始值
如果我們將一個原始值賦給常量,我們就不能改變原始值:
實例
const PI = 3.141592653589793; PI = 3.14; // 會出錯 PI = PI + 10; // 也會出錯常量對象可以更改
您可以更改常量對象的屬性:
實例
// 您可以創建 const 對象: const car = {type:"porsche", model:"911", color:"Black"};// 您可以更改屬性: car.color = "White";// 您可以添加屬性: car.owner = "Bill";但是您無法重新為常量對象賦值:
實例
const car = {type:"porsche", model:"911", color:"Black"}; car = {type:"Volvo", model:"XC60", color:"White"}; // ERROR常量數組可以更改
您可以更改常量數組的元素:
實例
// 您可以創建常量數組: const cars = ["Audi", "BMW", "porsche"];// 您可以更改元素: cars[0] = "Honda";// 您可以添加元素: cars.push("Volvo");但是您無法重新為常量數組賦值:
實例
const cars = ["Audi", "BMW", "porsche"]; cars = ["Honda", "Toyota", "Volvo"]; // ERROR重新聲明
在程序中的任何位置都允許重新聲明 JavaScript var 變量:
實例
var x = 2; // 允許 var x = 3; // 允許 x = 4; // 允許在同一作用域或塊中,不允許將已有的var或let變量重新聲明或重新賦值給const:
實例
var x = 2; // 允許 const x = 2; // 不允許 {let x = 2; // 允許const x = 2; // 不允許 }在同一作用域或塊中,為已有的 const 變量重新聲明聲明或賦值是不允許的:
實例
const x = 2; // 允許 const x = 3; // 不允許 x = 3; // 不允許 var x = 3; // 不允許 let x = 3; // 不允許{const x = 2; // 允許const x = 3; // 不允許x = 3; // 不允許var x = 3; // 不允許let x = 3; // 不允許 }在另外的作用域或塊中重新聲明 const 是允許的:
實例
const x = 2; // 允許{const x = 3; // 允許 }{const x = 4; // 允許 }提升
通過 var 定義的變量會被提升到頂端。如果您不了解什么是提升(Hoisting),請學習提升這一章。
您可以在聲明 var 變量之前就使用它:
實例
carName = "Volvo"; // 您可以在此處使用 carName var carName;通過 const 定義的變量不會被提升到頂端。
const 變量不能在聲明之前使用:
實例
carName = "Volvo"; // 您不可以在此處使用 carName const carName = "Volvo";總結
以上是生活随笔為你收集整理的uniapp 获取到js文件var一个变量怎么获取到这个变量值_浅析Js中const,let,var的区别及作用域...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JS编程:查找数组元素位置
- 下一篇: redis 三种特殊数据类型