前端学习笔记js篇(2)

1. ==和===

js中==运算会先将两边的数据类型进行转换,如: 1=='1',会先把'1'转换成1,再进行比较,结果自然是true

而===运算是将两边的数据进行完全比较,数据类型和数值必须完全相同。因此1==='1',结果自然是false

2.变量提升

变量提升即在js中声明的变量会被提升到当前函数作用域的顶部,下一以一个例子进行解析

var a = 'aaa';
function b() {
    console.log(a);
    var a = 'bbb';
    console.log(a);
}
b();
console.log(a);

此时输出的结果为

//undefined
//bbb
//aaa

由于存在变量提升,上述代码的实际执行顺序为:

var a = 'aaa';
function b() {
    var a;
    console.log(a);
    a = 'bbb';
    console.log(a);
}
b();
console.log(a);

函数b内部的a的定义会被提升到函数b的顶部,因此第一个a的输出是undefined。

那为什么最后一个a的输出仍是aaa而不是bbb呢,这是因为当函数内部变量与函数外部变量同名时,内部读取,修改的变量默认为内部变量,因此不会修改到外部的a(此时可以在内部通过使用this.a读取外部的a)

3.JS浮点数计算

js中存在浮点数计算不精确的问题,即:0.1+0.2不等于0.3,而是输出0.3000000000004。

解决这个问题的方法是将浮点数运算改为非浮点数运算,即:(0.1*10+0.2*10)/10,输出便为0.3

此处提一下js的四舍五入方法:

Math.ceil(3.5) // 4

Math.floor(3.5) // 3

Math.round(3.5) // 4







猜你喜欢

转载自blog.csdn.net/m0_37782372/article/details/80941635