typeof(123); // number
typeof('123'); //string
typeof(true); // boolean
typeof({}); // object
typeof([]); // object 引用类型
typeof(null); //object 刚开始是为了指定空对象指针,es6提案说把null改成null类型被ECMA拒绝了
typeof(undefined); // undefined
typeof(NaN); // number
typeof(function () {}); // function
typeof(1 - 1); // number
typeof(1 - '1'); // number
typeof('1' - '1'); // number
// 如果上面没有定义a
// console.log(a); // 报错
typeof(a); // undefined
typeof(typeof(a)); // string, 检查出的数据类型的数据类型是字符串
// typeof(+); // 报错
// typeof(typeof(+)); // 报错
// 显示类型转换 、 隐式类型转换
Number('123'); // 123
Number('true'); // NaN
Number(true); // 1
Number(null); // 0
Number(undefined); // NaN
Number(NaN); // NaN
Number('a'); // NaN
Number('1a'); // NaN
Number('3.14'); // 3.14
Number('3.54'); // 3.54
parseInt('123'); // 123
parseInt(true); // NaN
parseInt(null); // NaN
parseInt(undefined); // NaN
parseInt(NaN); // NaN
parseInt('3.14'); // 3
parseInt(3.54); // 3 取整,不会四舍五入
parseInt('abc123'); // NaN
parseInt('123abc'); // 123
parseFloat('3.14'); // 3.14
parseFloat('3.1465926').toFixed(2); // 3.15,会四舍五入
// undefined.toString(); // 报错,没有这个方法
// null.toString(); // 报错,没有这个方法
// 隐式类型转换
var a = '123'; // Number(a)
a++; // 124
var b = '3' * 2; // 6 * / - % > < >= <= 都是 string -> number
var c = 'a' > 'b'; // 转换成 ascii
var d = undefined < 0; // fasle
var e = undefined > 0; // fasle
var f = undefined == 0; // fasle
var a1 = null > 0; // fasle
var b1 = null < 0; // fasle
var c1 = null == 0; // fasle
var d1 = undefined == null; // true
var f1 = NaN == NaN; // false
// isNaN 都进行了 Number() 转换
isNaN(NaN); // true
isNaN('123'); // false
isNaN('a'); // true
isNaN(null); // fasle
isNaN(undefined); // true
js 显示、隐式类型转换
于 2022-05-26 21:54:46 首次发布