# 注意用 === 而非 ==
# isNaN(); //若是用 NaN === NaN 也是 false
# 浮點數計算因爲精度問題沒法相等,斷定要用差值<0.0000001
# 'use strict'; // 杜毫不用 var 就聲明變量--->全局變量容易形成問題
# string.substring(i, j); --- array.slice(i, j);
# 字符串不可變,數組可變
# 增刪改數組:unshift shift sort reverse
splice concat
join
# false: NaN, undefined, 0, null ,true: 其餘
# 對象,支持ES6的瀏覽器可用Map、Set(這倆遍歷用 iterable)通常用對象就夠了
* 對象是鍵值對,但鍵只能是字符串
* Map 和 python 的 dict 很像var m = new Map([['key',value], ['key', value],...]);
方法:set, has, delete, get
* Set 只有 key 沒有 value, 自動過濾重複元素
var s = new Set([1, 2, 3, 3, '3']);
s; // Set {1, 2, 3, "3"}
方法:add(key),delete(key)
# 函數,兩種定義方式
* function func_name(x){
// .......
return 0;
}
* var func_name = function(x){
return;
};
# arguments,它只在函數內部起做用,而且永遠指向當前函數的調用者傳入的全部參數
# 函數內部定義變量時,最多見的作法是用一個var申明函數內部用到的全部變量:
function foo() {
var
x = 1, // x初始化爲1
y = x + 1, // y初始化爲2
z, i; // z和i爲undefined
// 其餘語句:
for (i=0; i<100; i++) {
...
}
}
#
在一個方法內部,this是一個特殊變量,它始終指向當前對象 ,若是單獨調用函數,此時,該函數的this
指向全局對象,也就是window
。
但在函數內部定義的函數,this
又指向undefined
了,要在函數開始時就捕獲 var that = this; 後面才能正經常使用