javascript ES 6基礎語法摘要

布爾值(boolean)判斷數據類型爲空

  1. 數組

    	var arr = [];
    	if (arr.length === 0){
    		alert("arr 爲空");
    	}
    
  2. 對象(python 字典)

    	var object = {};
    	# 無法判斷是否爲空
    	alert(object === {}) // false
    	alert(Boolean(object)) // true		
    

    有效方法 1

    	alert(JSON.stringify(object) === "{}") // true
    

    有效方法 2

    	var isEmpty = true;
    	for (var i in object){
    		isEmpty = false;
    	}
    	alert(isEmpty);
    

    有效方法 3 es6 新增

    	alert(object.keys().length === 0) # true
    
  3. 字符串

    	var str = '';
    	alert(Boolean(str)); // false
    	var str = '123';
    	alert(Boolean(str)) // true
    

箭頭函數

  1. 箭頭函數在 forEach 或者 map 的函數中,return 不能中斷外部函數的執行
var arr = [1,2,3,4]
arr.forEach(v=>{
	if (v=== 2){
		return;
	}
})
alert("Running");  此語句仍舊執行
  • 這是因爲 return 只中斷了該 箭頭函數的執行,forEach 的參數是一個函數,相當於有兩層執行空間,return 只返回了第一層,也就相當於正常 for 循環中的 continue,等於下面的代碼
var arr = [1,2,3,4];
for (var i=0;i<arr.length;i++){
	if (i === 2){
		continue
	}
}

Promise 對象

  1. 該對象類似於一個線程,開闢了另一段空間,異步執行代碼後,返回給 訂閱(subscribe)的函數
	let Obj = new Promise(re => setTimeout(re, 2000));
	Obj.then(()=>{
		console.log("Promise Done");
	})
	console.log("Running");
	
	// 結果是
	# Running
	# Promise Done
  • 該現象會導致,明明在 ngOnInit 中執行了一個 請求數據的Http 請求,然後跟着去獲取該http的數據時,調用報錯,顯示該http 數據爲 Undefined
  • 這是因爲在angular 中強制使用 promise 調用 Http 請求,當執行到獲取 http 請求的語句時,正在網絡通信狀態,就跳過該語句,進而執行獲取http 數據的語句,直到http請求完全返回時,http 數據纔會被賦值
  • 解決方案就是對 獲取 http 數據加上一個時間緩存,類似於上面的代碼
  • 或者 直接在 進行請求Http數據的的語句塊中進行數據操作
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章