首页 > 代码库 > effective javascript 学习心得

effective javascript 学习心得

第2条:理解JavaScript的浮点数

1.js数字只有一种类型

2.见代码

/**
 * Created by Administrator on 2017/7/2.
 */
console.log("charpter2");
console.log(1-0.41); //0.5900000000000001 double不能精确计算
console.log((8).toString(2));//1000 数字转其他进制输出
console.log(parseInt("1001", 2));//9 其他进制转数字

 

第3条:当心隐式的类型转换

1.       - * / % 在计算之前会把参数转化成数字, +可以是数字或者字符串,有字符串就优先字符串, 位运算符 ~ & | ^ <<  >>  >>>会将参数转化成32位整数

2.见代码

 1 console.log("charpter3");
 2 console.log("17" * 3); //51
 3 console.log(NaN === NaN);//false
 4 console.log(isNaN(NaN));//true
 5 console.log(isNaN("haha"));//true
 6 console.log(isNaN(""));//false
 7 console.log(isNaN(null));//false
 8 console.log(isNaN(undefined));//true
 9 console.log(null === null);//true
10 console.log(undefined === undefined);//true
11 function isReallyNaN(a) { // 判断参数到底是不是NaN的最简单方法
12     return a !== a;
13 }
14 console.log("object : " + {
15         toString: function () {
16             return "object"
17         }, valueOf: function () {
18             return 123;
19         }
20     }); //优先选择valueOf作为返回值

3. if || && 会把参数转化成布尔值, js里有7个转化后为假的值: false 0 -0 null undefined NaN ""

4.检查参数是否为undefined可以用typeof(x) === "undefined" 或者 x===undefined

 

effective javascript 学习心得