要不是因为去面试,我才发现自己原来有那么的小知识点不知道,还有一些原理理解的不透彻,想来面试真的是检验自己学的是否扎实的不二途径,所以,多多总结才会变得更稳呐。
Nan
1,Nan表示not number,中文解释是“非数字的特殊值”;
2,Nan的数据类型是number(这是事实,我没有说错);
typeof NaN; //number
console.log(NaN == NaN); //false
虽然结果是false很奇怪,也是要接受的:NaN和所有值都不相等,包括它自己(所以,创造出来这个关键字究竟有啥用途呢?!!!!)
3,在哪种情况下会出现NaN
var str = "i wanna a cat";
var str2int = parseInt(str);
console.log(str2int);//NaN
console.log(typeof str2int);//number
这时候的str2int的值是一个NaN,它的类型是number,即parseInt成功的将字符串转换成了数字,但是这个值无法用数字表示出来
4,如何判断一个变量是否是NaN
方法一:这个方法括号里面的东西都是要加上“”的
console.log(isNaN('i wanna a cat'));//true
如果传入数字,就会返回false了
console.log(isNaN('123')); // false
方法二:这个方法括号里的就是你想检测的对象,包括上标
console.log(Number.isNaN('hello')); // false
undefined
遇到一道面试题:undefined 和not defined有什么区别
1,undefined是javascript中五个基本类型中的一个,undefined是表示系统级的、出乎意料的或类似错误的值的空缺;
2,在一下几种情况下会出现undefined:
- 变量被声明,但是没有被赋值,这个时候使用这个变量就会报undefined
- 一个不存在的对象空成员
- 在变量提升(预解析)阶段,只声明未定义,默认值就是undefined
- 在JS的严格模式下(”use strict”),没有明确的主体,this指的就是undefined
- 函数定义没有返回值(return或者return后面什么也不带),默认的返回值就是undefined
- 函数定义形参不传值,默认就是undefined
- 函数定义形参不传值,默认就是undefined
3,not defined仅仅表示一个对象没有被定义就被使用了,这是一种系统异常
null
1,null是javascript的五个基本数据类型之一,表示“空的”,表示程序级的、正常的或在意料之中的值的空缺
typeof null; //object
2,null可以表示为一个空对象
3,你可以将一个对象赋值为null,表示这是一个空对象,就像一个占位符一样(一般不会手动将一个变量赋值为undefined,这样做感觉有点傻)