欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

javascript ES 6基础语法摘要

程序员文章站 2022-04-25 20:09:09
...

布尔值(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数据的的语句块中进行数据操作