variable 變數
NIKEDIN 2020-12-02 varletconst
變數沒有型別,值才有!!
# 資料型別
# 基本型別
string
number
boolean
⇒ true || falsenull
⇒ 明確給值 nullundefined
⇒ 已宣告,尚未給值、未定義symbol
ES6
var str = 'string' //string
var number = 123 // number
var boolean = true // boolean
var state = null // null
var undefinde // undefined
# 物件型別
所有基本型別之外的類型,就是物件型別
var obj = {}
var array = []
# 變數宣告 variable
# var 全域變數
為正式宣告變數,可重覆宣告、可覆寫
//type1: var name = 'value' //字串 var name = 123 //數字 var 名稱 = true //布林值 //type2: var price var quantity var total price = 5 quantity = 14 total = price * quantity //type3: var price = 5, quantity = 3, total = price * quantity //變數為匿名 function 型態 var word = function() { console.log('hi') } //無宣告變數(暫時性): a = 1 delete a //可以直接被刪除!
作用區域
除了函式之外
,都可以被覆寫,。var a = 1 ; console.log(a);//1 ------------------ 可被覆寫 >> if(1){ var a = 999; } console.log(a);// 999 ------------------可被覆寫>> for(i=1;i<10;i++){ var a = 2; console.log(a); //2 } console.log(a); // 此時 a = 2 ------------------無法被覆寫>> function x(txt){ var a = txt; console.log(a); } x(123); // console.log(a) => 123 console.log(a); //此時 a = 2
任何地方可以被宣告使用,但函式區塊內宣告,只能在 { } 內被認得!!
# let 域區變數
只能作用在宣告的區塊,無法重覆宣告,但可以被覆寫。
ex: 透過
{}
界定使用範圍let x = 1 if (1) { let x = 2 console.log(x) //2 } console.log(x) //1
建議
{}
區塊 內使用,全域使用 let,變數將無法再被重覆宣告。windows.let 不會被找到!# const 區域_常數變數
具有區塊內使用的特性,無法重覆宣告、無法更改指定值!可以獨立存活在區塊內,出區塊即失效!
ex: 透過
{}
界定使用範圍const a = 111 for (i = 1; i < 10; i++) { console.log(i) const a = 222 console.log(a) //迴圈會印出 22222 } console.log(a) // 印出 111
與 let 一樣具在宣告後,只在當下區塊作用的特性。無法重覆宣告、覆寫。
# 型別判斷 ⇒ typeof variable
typeof true // 'boolean'
typeof 'Naiky' // string
typeof 123 // number
typeof {} // object
typeof [] // object
typeof window.alert // function
typeof null // object
# 基本型別
typeof true // 'boolean' typeof 'Naiky' // string typeof 123 // number
# NaN 判斷
isNaN( variable )
不是數字 (Not a Number)
typeof NaN // 'number' NaN == NaN // false isNaN('str') // true isNaN(123) // false isNaN(NaN) // true
# 物件型別
除了基本型之外,都會是 Object 物件型別,但難以判斷是 Object 物件 || Array 陣列
typeof [] // Object typeof {} // Object
# 判斷 Array 陣列型別
Array.isArray( array )
Array.isArray([]) // true Array.isArray({}) // false