1. 程式人生 > >【小程式】開發 JS知識總結

【小程式】開發 JS知識總結

JS知識總結

  1. js判斷字元是否為空的方法:
//判斷字元是否為空的方法
function isEmpty(obj){
    if(typeof obj == "undefined" || obj == null || obj == ""){
        return true;
    }else{
        return false;
    }
}

// 簡寫
if(a != null && a !=' ' && typeof(a) != undefined)  <==>  if (!! a)
  1. js 判斷是否相等
    始終堅持使用===比較。
要特別注意相等運算子==。JavaScript在設計時,有兩種比較運算子:

第一種是==比較,它會自動轉換資料型別再比較,很多時候,會得到非常詭異的結果;

第二種是===比較,它不會自動轉換資料型別,如果資料型別不一致,返回false,如果一致,再比較。

由於JavaScript這個設計缺陷,不要使用==比較,始終堅持使用===比較。
  1. 多行字串

由於多行字串用\n寫起來比較費事,所以最新的ES6標準新增了一種多行字串的表示方法,用反引號 ... 表示

`這是一個
多行
字串`;

注意:反引號在鍵盤的ESC下方,數字鍵1的左邊.

  1. 模板字串
    如果有很多變數需要連線,用+號就比較麻煩。ES6新增了一種模板字串,表示方法和上面的多行字串一樣,但是它會自動替換字串中的變數:
var name = '小明';
var age = 20;
var message = `你好, ${name}, 你今年${age}歲了!`;
alert(message);
  1. if條件判斷
JavaScript把null、undefined、0、NaN和空字串''視為false,其他值一概視為true,因此下面程式碼條件判斷的結果是true。

var s = '123';
if (s.length) { // 條件計算結果為3
    //
}
  1. 變數作用域
由於JavaScript的函式可以巢狀,此時,內部函式可以訪問外部函式定義的變數,反過來則不行;

JavaScript的函式在查詢變數時從自身函式定義開始,從“內”向“外”查詢。如果內部函式定義了與外部函式重名的變數,則內部函式的變數將“遮蔽”外部函式的變數。
  1. 變數提升
JavaScript引擎自動提升了變數y的宣告,但不會提升變數y的賦值。
'use strict';

function foo() {
    var x = 'Hello, ' + y;
    console.log(x);
    var y = 'Bob';
}

foo();
console.log顯示Hello, undefined
  1. 全域性作用域
不在任何函式內定義的變數就具有全域性作用域。實際上,JavaScript預設有一個全域性物件window,全域性作用域的變數實際上被繫結到window的一個屬性:
'use strict';

var course = 'Learn JavaScript';
alert(course); // 'Learn JavaScript'
alert(window.course); // 'Learn JavaScript'

JavaScript實際上只有一個全域性作用域。任何變數(函式也視為變數),如果沒有在當前函式作用域中找到,就會繼續往上查詢,最後如果在全域性作用域中也沒有找到,則報ReferenceError錯誤。

  1. 區域性作用域
由於JavaScript的變數作用域實際上是函式內部,我們在for迴圈等語句塊中是無法定義具有區域性作用域的變數的:
'use strict';

function foo() {
    for (var i=0; i<100; i++) {
        //
    }
    i += 100; // 仍然可以引用變數i
}

為了解決塊級作用域,ES6引入了新的關鍵字let,用let替代var可以申明一個塊級作用域的變數: