日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

uniapp 获取到js文件var一个变量怎么获取到这个变量值_浅析Js中const,let,var的区别及作用域...

發(fā)布時間:2023/12/10 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 uniapp 获取到js文件var一个变量怎么获取到这个变量值_浅析Js中const,let,var的区别及作用域... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

理解:let變量的作用域只能在當前函數(shù)中

js中const,let,var的區(qū)別及作用域_lianzhang861的博客-CSDN博客?blog.csdn.net全局作用域中,用 const 和 let 聲明的變量不在 window 上,那到底在哪里?如何去獲取??blog.csdn.net

早期的JavaScript中,聲明變量只能使用var關鍵字定義變量,并沒有定義常量的功能。通過var關鍵字定義的變量,其作用域只能函數(shù)級或是全局作用域,并沒有塊級作用域ES6(ECMAScript 2015)對這一問題做了改善,增加了用于定義塊級變量的let關鍵字和用于定義常量的const關鍵字

JavaScript let 和 const

ECMAScript 2015(ECMAScript 6)

ES2015(ES6) 新增加了兩個重要的 JavaScript 關鍵字: let 和 const。

let 聲明的變量只在 let 命令所在的代碼塊內(nèi)有效。

const 聲明一個只讀的常量,一旦聲明,常量的值就不能改變。

在 ES6 之前,JavaScript 只有兩種作用域: 全局變量 與 函數(shù)內(nèi)的局部變量。

  • var定義變量
    • 1.1 語法及說明
    • 1.2 使用及特點
  • let定義塊級變量
    • 2.1 語法及說明
    • 2.2 與var的異同
  • const定義常量
  • 1. var定義變量

    1.1 語法及說明

    var關鍵字用于聲明一個或多個變量,聲明多個變量時使用逗號(,)分隔,聲明變量的同時可以對其初始化。

    語法法結構如下:

    var varname1 [= value1 [, varname2 [, varname3 ... [, varnameN]]]];
    • varname1…varnameN - 變更名。可以是任何合法的標識符。
    • value1…valueN - 初始化值。可選??梢允侨魏魏戏ǖ谋磉_式。

    使用var聲明變量時,聲明的變量作用域是在當前位置的上下文件中:函數(shù)的內(nèi)部(聲明在函數(shù)內(nèi))或者全局(聲明在函數(shù)外)。

    1.2 使用及特點

    使用var定義的變量有以下特點:

    變量聲明提升

    無論在代碼的任何位置聲明變量,執(zhí)行引擎都會在任何代碼執(zhí)行之前處理。由于這個原因,所以在代碼中的任意位置聲明變量與在代碼開頭聲明變量是等效的。

    這意味著我們可以在定義變量之前使用,這個行為叫做'hoisting',也就是把所有的變量聲明移動到函數(shù)或者全局代碼的開頭位置。

    hoist = 'http://itbilu.com'; var hoist;// 可以理解為: var hoist; hoist = 'http://itbilu.com';

    注意:雖然變量聲明提升讓我們可以先使用再定義變量,但建議總是先定義再使用變量,這樣可以讓變量的作用域更加清晰。

    聲明與未聲名變量的區(qū)別

    未聲明的變量會被添加一個全局作用域,而聲明變量作用域是當前上下文:

    function x() {y = 1; // 在嚴格模式下會拋出ReferenceErrorvar z = 2; } x();console.log(y); // '1' console.log(z); // ReferenceError: z is not defined

    聲明變量在任何代碼執(zhí)行前創(chuàng)建,而未聲明的變量只有在執(zhí)行賦值操作的時候才會被創(chuàng)建:

    console.log(a); // 拋出ReferenceError。 console.log('still going...'); // 不會執(zhí)行 var a; console.log(a); // "undefined"或""(不同執(zhí)行引擎的實現(xiàn)不同) console.log('still going...'); // 'still going...'

    聲明變量是不可配置屬性,而未聲明變量是可配置的:

    var a = 1; b = 2;delete this.a; // 在嚴格模式下拋出TypeError,非嚴格模式下執(zhí)行失敗且無任何提示 delete this.b;console.log(a, b); // 拋出ReferenceError,'b'屬性已經(jīng)被刪除

    以上三點是聲明與未聲明變量區(qū)別,但錯誤表現(xiàn)是不可預知的。而在嚴格模型下,使用未賦值的變量會拋出異常,推薦總是先定義(聲明)再使用變量。

    全局作用域與函數(shù)作用域

    函數(shù)內(nèi)部聲明的變量只能在函數(shù)內(nèi)部使用,函數(shù)外部聲明的變量可以全局使用:

    var x = 0;function f(){var x = 1, y = 1; } f();console.log(x); // 0 console.log(y); // ReferenceError: y is not defined

    2. let定義塊級變量

    2.1 語法及說明

    let用于定義塊級變量,其語法結構類似于var:

    let varname1 [= value1 [, varname2 [, varname3 ... [, varnameN]]]];

    var聲明的變量是函數(shù)級的或者是全局的,而let用于聲明塊級作用域。

    如,使用let聲明一個塊級變量:

    if (x > y) {let gamma = 12.7 + y;i = gamma * x; }

    2.2 與var的異同

    let與var的區(qū)別主要體現(xiàn)在作用域上,當在子代碼塊中使用中其聲明的是塊級變量,而var聲明的是全局變量:

    var a = 5; var b = 10;if (a === 5) {let a = 4; // if 塊級作用域var b = 1; // 函數(shù)級作用域console.log(a); // 4console.log(b); // 1 } console.log(a); // 5 console.log(b); // 1

    在函數(shù)或程序頂層使用時,let與var沒有什么區(qū)別:

    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定義變量十分相似:

    • 二者都是塊級作用域
    • 都不能和它所在作用域內(nèi)的其他變量或函數(shù)擁有相同的名稱

    兩者還有以下兩點區(qū)別:

    • const聲明的常量必須初始化,而let聲明的變量不用
    • 常量的值不能通過再賦值改變,也不能再次聲明。而變量值可以修改

    通過 const 定義的變量與 let 變量類似,但不能重新賦值:

    實例

    const PI = 3.141592653589793; PI = 3.14; // 會出錯 PI = PI + 10; // 也會出錯

    塊作用域

    在塊作用域內(nèi)使用 const 聲明的變量與 let 變量相似。

    在本例中,x 在塊中聲明,不同于在塊之外聲明的 x:

    實例

    var x = 10; // 此處,x 為 10 { const x = 6;// 此處,x 為 6 } // 此處,x 為 10

    在聲明時賦值
    JavaScript const 變量必須在聲明時賦值:

    不正確 const PI; PI = 3.14159265359; 正確 const PI = 3.14159265359;

    不是真正的常數(shù)
    關鍵字 const 有一定的誤導性。
    它沒有定義常量值。它定義了對值的常量引用。
    因此,我們不能更改常量原始值,但我們可以更改常量對象的屬性。

    原始值
    如果我們將一個原始值賦給常量,我們就不能改變原始值:

    實例

    const PI = 3.141592653589793; PI = 3.14; // 會出錯 PI = PI + 10; // 也會出錯

    常量對象可以更改

    您可以更改常量對象的屬性:

    實例

    // 您可以創(chuàng)建 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

    常量數(shù)組可以更改

    您可以更改常量數(shù)組的元素:

    實例

    // 您可以創(chuàng)建常量數(shù)組: const cars = ["Audi", "BMW", "porsche"];// 您可以更改元素: cars[0] = "Honda";// 您可以添加元素: cars.push("Volvo");

    但是您無法重新為常量數(shù)組賦值:

    實例

    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的区别及作用域...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。