前言:
最近整理了一些在js中容易被忽略的小知识点,在这里分享出来,多了解一些方便我们日后阅读源码,提升js功底。
1.var创建的变量不能删除
var a = 1;
delete a;
console.log(a);
//输出 1
2.不使用var创建的变量可以删除
a = 1;
delete a;
console.log(a);
//异常 Uncaught ReferenceError: a is not defined
3.函数声明优先级高于函数表达式
var test = function(){ return 1; };
function test(){ return 2; }
console.log(test())
//输出:1
4.代码块或if语句中函数声明不会提升
a()
{
function a(){
console.log(1)
}
}
//输出:Uncaught TypeError: a is not a function
5.逻辑运算符
let test = res.data.obj || {};
//如果res.data.obj为false 则给test赋值{}
a && b();
等价于
if(a){
b();
}
//如果a为true,则执行b方法;
6.数字类型转String
2.toString() //会报错
2..toString()//'2'
//js中不区分整数跟浮点数,遇到的第一个点会被当做浮点数中的点
7.冻结对象
let obj = {
a:1,
b:1
}
Object.freeze(obj) //冻结对象
obj.a = 2;
console.log(obj.a)
//对象被冻结后无法添加、修改、删除属性
8.数字之前的0可以省略,小数点后的0也可以省略(当然,正常情况下不建议省略)
let a = 0.4
等价于
let a = .4;
let b = 3.0;
等价于
let b = 3.;
9.toFixed返回值为字符串
let a = 3.1415;
a.toFixed(2);
// '3.14'
10. 0.1+0.2!=0.3 (这个点相对来说没那么冷,老面试题了)
console.log(0.1+0.2!=0.3)
//输出
//true
解析:
javascript遵循 IEEE 754 规范,在计算中会进行二进制转换,转换时个别位数会丢失,最后导致转换后的数值相加不等于0.3
11. undefined与null的区别
1.在进行比较时(undefined == null)不会进行隐式类型转换,会直接返回true;
2.undefined 为变量未定义时默认值。
例如:
var a = 3;
在编译执行时会分为两步。
1.var a == undefined;
2.a = 3;
3.null 为此处不应有值。
12. void运算符
在个别组件中,为防止undefined被重定义,通常用void 0代替undefined;
本质上 void 0、void 1、undefined没有区别
void 0 === undefined
输出:
true
void 1 === undefined
输出
true