- 掌握JS中的字符串、函数、对象、数组、字面量等基本概念,熟记所有内置的方法(包括参数和返回值)
- DOM事件和所有DOM方法一定要掌握的牢不可破;
- 学好正则表达式;
2017/08/12开始第 1 计划的实施,加油⛽️
阅后小记
typeof是操作符,并不是函数来的。只能用来检测基本数据类型(undefined/null/string/number/object/function),对于未初始化和未声明的变量做typeof,都会返回undefined,切记。但更多的时候,我们并不是想知道某个值是对象,而是想知道它是声明类型的对象,因此不得不提到instanceof操作符,该操作符在检测引用类型和Object构造函数时,都会返回true。当然如果使用instanceof去检测基本数据类型(undefine/null/boolean/string/number/)时,都会返回false;
参考链接: js中typeof和instanceof用法区别null类型值得注意⚠️的一点:如果定义的那个变量明确在将来是用于保存对象,那么最好在初始化该变量为null,代表是空对象指针。这样也能明确的与undefine(未初始化)区分开来;而在项目中很少有同事做到这一点,谨记!说到这,突然想起项目中遇到过的坑。
'use strict'; // 变量hoyin是通过接口获取的 if(hoyin == null){ //执行的代码 alert(hoyin); } else{ // 执行的代码 }
谁知接口那边没有返回hoyin的变量,那么hoyin直接就是undefined,但是没有意识到undefined == null为true。为了避免这种失误,有两种解决方法:
if(hoyin === null){};// 强等于号,不会进行类型转换再比较 if(!hoyin){};//这样不管是undefine还是null,都可行
数值转换的3个方法: Number(), parseInt(), parseFloat();
- Number() 方法可以转换任何类型数据,而其他那两个方法则专门是把字符串转换为数值。
- 由于Number() 方法存在转换机制的复杂与有些不合理,所以几乎很多时候我们用到的都是 parseInt 和 parseFloat 方法进行转换。切记 psrseInt可以解析任意进制的数值,所以转换时应明确的指定基数,p如:parseInt(‘1234’, 10); parseInt(‘AF’, 16); 而parseFloat只能解析十进制,所以不会有第二个参数指定基数。
toString() 方法在项目中还是比较常用的,数值/布尔值/对象/字符串都内置了这个方法,但是null和undefine是没有的,所以在进行toString()是有必要注意⚠️一下这两个类型。不过还有一个方法是所有类型的数据都内置的,那就是String(),它其实是在toString()的基础上加上null和undefine,null=》null,undefined=》undefined,这样都不会报错。哈,还有一个冷门的知识点就是数值的toString() 可以传递参数(基数),p如:var num =10; num.toString(16);
Object对象类型都有一下内置的方法:
- constructor:保存着创建当前对象的函数,也就是构造函数。
- hasOwnProperty(propertyName):这个方法在项目中经常用到,用来剔除继承原型中的属性,确保用到的属性都是当前对象实例的。注意⚠️参数必须是字符串。
- isPrototypeOf(object): 用于检查传入的对象是否是传入对象的原型
- toLocalleString(): 返回对象的字符串
- toString(): 返回对象的字符串
- valueOf():返回对象的字符串,数值或 布尔值表示
关于valueOf 和 toString的理解还不够到位,扒了相关的博客:valueOf函数与toString方法深入理解
搜到博客对于数组的valueOf方法的描述有些疑惑,通过实践证明得到的并不是由逗号拼接而成的字符串(望有大神解答),而是原始值: