※七種型態
Booleannull
undefined
Number
String
Symbol: ECMAScript 6 中新增,實體是唯一且不可變的
Object
※有new 和沒new的差別
var n = new Number(5); console.log('n=' + n + ',tn=' + typeof n); // object var n2 = 5; console.log('n2=' + n2 + ',tn2=' + typeof n2); // number var s = new String('a'); console.log('s=' + s + ',ts=' + typeof s); // object var s2 = 'a'; console.log('s2=' + s2 + ',ts2=' + typeof s2); // string var b = new Boolean(true); console.log('b=' + b + ',tb=' + typeof b); // object var b2 = true; console.log('b2=' + b2 + ',tb2=' + typeof b2); // boolean var nil = null; console.log('nil=' + nil + ',tnil=' + typeof nil); // object var u = undefined; console.log('u=' + u + ',tu=' + typeof u); // undefined var f = new Function(); console.log('f=' + f + ',tf=' + typeof f); // 看下面的圖 var f2 = function(){}; console.log('f2=' + f2 + ',tf2=' + typeof f2); // 看下面的圖
※結果:
※除了function外,有new的型態都是object
※字串用「'」和「"」都可以
※型態要注意的事
// var b = new Boolean(false); var b = false; console.log('b1=' + b);// false console.log('b2=' + b ? 'true':'false'); // true console.log('b3=' + b == true ? 'true':'false');// false // null 和 undefined 區別 console.log(null == undefined); // true console.log(null === undefined); // false console.log(1 + null); // 1 console.log(1 + undefined); // NaN // 數字 var n = .1; console.log(n); // 0.1 console.log(typeof n); // number // 字串+數字和數字+字串 var a = '1'; var b = 2; console.log(a + b); // 12 console.log(b + a); // 21
※要注要boolean用來判斷時的寫法,如判斷b而已,它會認為有東西就是true
※null 可以加減;undefined 不行
※數字用「.」開頭,會幫你加上0
※使用 typeof 關鍵字可顯示型態
※字串+數字和數字+字串,較舊的瀏覽器有可能變成3,我用IE11和Google51結果都一樣
※六種迴圈
// 一、do...while var i = 0; outer: do { console.log(++i); if (i == 3){ break outer; } else { continue outer; } } while (i < 5); // 二、while var i = 0; outer: while (i < 5) { console.log(++i); if (i == 3){ break outer; } else { continue outer; } } // 三、for outer: for(var i=1; i<5; i++){ console.log(i); if (i == 3){ break outer; } else { continue outer; } } // 四、for in var obj = ['a', 2, 'c', 4, 'e']; outer: for (var i in obj) { console.log(i); // 0 1 2 3 console.log(obj[i]); // a 2 c 4 if (i == 3){ break outer; } else { continue outer; } } // 五、for of var obj = ['a', 2, 'c', 4, 'e']; for (var i of obj) { console.log(i); // a 2 c 4 e } // for in 和 for of 區別 var arr = ['a', 2, 'c']; arr.six = 6; for (let i in arr) { console.log(arr[i]); // a 2 c 6 } for (let i of arr) { console.log(i); // a 2 c } // 六、forEach var obj = ['a', 2, 'c']; obj.forEach(xxx); function xxx(element, index, array) { console.log('element=' + element); // a 2 c console.log('index=' + index); // 0 1 2 console.log('array=' + array); // 都是a,2,c } /* 匿名寫法 obj.forEach(function (element, index, array) { console.log('element=' + element); // a 2 c console.log('index=' + index); // 0 1 2 console.log('array=' + array); // 都是a,2,c }); */ /* lambda寫法 obj.forEach((element, index, array) => { console.log('element=' + element); // a 2 c console.log('index=' + index); // 0 1 2 console.log('array=' + array); // 都是a,2,c }); */
※for in和for of的區別是在裡面宣告變數時,用for in是index;而for of是值
還有上面的陣列,後面給的值,for of 不會抓
for of 是 ECMAScript 6新增的
※這六種迴圈,只有forEach沒有標籤的寫法和break、continue,但可以用return true/false代替break、continue
※forEach不能呼叫var xxx = 的function
沒有留言:
張貼留言