變數 重複宣告 前端隨筆16 變數的這些事

2021-10-14 18:15:06 字數 1536 閱讀 1837

1. 變數

首先我們要明確變數只是乙個容器,用於儲存任何資料,其本身沒有任何特值。

es6以前宣告變數使用var關鍵字,es6新增let和const關鍵字。後期程式設計建議使用let(const)宣告變數。

const表示宣告的變數是乙個常量,第一次賦值之後再次給該變數賦值會報錯,其他特性與let相同。

下面主要講講var和let的區別。

區別1 作用域不同

let作用域是塊級作用域,而var作用域是函式作用域。塊級作用域範圍小於函式作用域範圍。(塊級作用域和函式作用域的區別後面說)

a; //1b; //referenceerror: a is not defined.
因此let特別適合即用即銷的場景,例如迴圈計數器。下面的**中如果使用var宣告計數器i,i的值會儲存到當前作用域內,可能會對後面產生影響。

for (var i =1;i<10;i++){}i; //10for (let i =1;i<10;i++){}i; //referenceerror: a is not defined.
區別2 變數提公升var宣告的變數可以先使用再宣告,而let宣告的變數不行。強行先使用變數再用let宣告會報錯。

區別3 重複宣告

let宣告的變數不允許重複宣告,而acr宣告的變數可以。

//報錯let m =1;let m =2;//報錯let m =1;var m =2;//不報錯var m =1;let m =2;
區別4 暫時性死區其意思是只要塊級作用域內有let宣告的變數,那麼該變數就遵循let宣告的變數的所有規則。

2. 變數型別

變數型別特性number整數和浮點數,使用parseint()函式/parsefloat()函式可以將數值轉化為整數和浮點數string字串,使用tostring()函式轉化成字串booleantrue或者falsearray陣列object物件,資料以鍵值對的形式存在

注意:js中變數型別是動態變化的,因為在宣告的時候不會設定資料型別,給變數賦什麼型別的值,該變數就是什麼型別

3. 塊級作用域

es5中只有全域性作用域和函式作用域,這樣會出現一些問題,例如上面例子中迴圈計數器i洩露,內層變數覆蓋外層變數。es6新增塊級作用域{}。給我的最直觀的感受就是以前用於立即執行的匿名函式不再需要,我們可以用更簡單的**實現了,如下述**

(function()())// 可以使用下面的**替代
通過本次學習,對變數的認識又加深了一步,我們宣告變數的方式更加多樣化,針對不同的需求使用不同的宣告方式會是我們的**更加簡潔易懂。

變數 重複宣告 JS的組成 變數 資料型別

js做客戶端語言 按照相關的js語法,去操作頁面中的元素,有時還要操作瀏覽器裡面的一些功能 js由三部分組成 js中的變數 variable js中資料分為兩大類 一是基本資料型別 undefined null boolean number string symbol,二是複雜資料型別 object...

變數的宣告

1.按型別定義變數 abap的變數需要通過關鍵字data進行宣告,當同時宣告多個變數時,需要在data後面加冒號,如 data 每個變數可以分配預設值,使用 value 預設值 進行定義,語法如下 data 變數名 長度 type 資料型別 value 預設值 例如 定義乙個c型別變數 test1 ...

變數宣告的意義

c語言為什麼要規定先宣告變數呢?為什麼要指定變數的名字和對應的資料型別呢?1 建立變數符號表。通過宣告變數,編譯器可以建立變數符號表,如此一來,程式中用到了多少變數,每個變數的型別是什麼,編譯器非常清楚,是否使用了沒有宣告的變數,編譯器在編譯期間就可以發現。從而幫助了程式設計師遠離由於疏忽而將變數名...