JavaScript-2-类型转换、null和undefined的注意点

2022年6月10日09:59:50

数据类型:number、string、boolean、null、undefined、object

1. number ==> string

+‘’ 、String(number) 、number.toString()

var a=12;
var b=13;
console.log(a+''+b,typeof(a+''+b)) /* 1213 string  */
console.log(a.toString()+b,typeof(a.toString()+b)); /* 1213 string */
console.log(String(a)+11,typeof (String(a)+11)); /* 1211 string */

2. string ==> number

Number()、+string、-string、parseFloat(s) 保留全部
~~string、parseInt(s) 只保留整数

var s1='12.9';
console.log(parseInt(s1)+1); /* 13 */
console.log(parseFloat(s1)+1);  /* 13.9 */
console.log(Number(s1)+1); /* 13.9 */


var s3='12.9';
console.log(+s3+1); /* 13.9 */
console.log(-s3+1); /* 11.9 */
console.log(~~s3); /* 12 */

Number() 和 parseFloat() 区别:

var s2='12.9abc';
console.log(parseFloat(s2)); /* 12.9 */
console.log(Number(s2)); /* NaN : not a number 非数字*/

ps:不过NaN为number的一种,即typeof NaN为number
注意NaN的特殊:

console.log(Number==Number); /* true */
console.log(null==null);  /* true */
console.log(undefined==undefined); /* true */
console.log(NaN==NaN); /* false */
console.log(typeof NaN); /* number */

3. number、string ==> boolean

Boolean()、!!number/string

var a=0,b=1,s1='',s2='hello',s3=null,s4=undefined;
console.log(Boolean(a)); /* false */
console.log(Boolean(b)); /* true */
console.log(Boolean(s1)); /* false */
console.log(Boolean(s2)); /* true */
console.log(Boolean(s3)); /* false */
console.log(Boolean(s4)); /* false */
console.log(!!b); /* true */
console.log(!!s4); /* false */

4. boolean==> number

console.log(false+1); /* 1 */
console.log(true+1); /* 2 */

5. 注意

【有些想测试的还没测。。。感兴趣的可以测一下】

console.log(undefined); /* undefined */
console.log(null); /* null */
console.log(undefined==null); /* true */
console.log(undefined==false); /* false */
console.log(!!undefined==false); /* true */
console.log(NaN==NaN); /* false */

【解释为什么console.log(undefinednull); /* true */】(有的说undefinednull是因为null为object,而undefined为类型,是null一特殊存在,不过好像最初是这样用,现在摒弃了。。。但不确定这样说对不对。。。)
null 表示 “没有对象”,即该处不应该有值(典型用法:(1)作为函数的参数,表示该函数的参数不是对象;(2)作为对象原型链的终点。(这里不是很懂QAQ。。。))
undefined表示“缺少值“,即此处该有个值,但是没有定义(典型用法:(1)变量被声明了,但没有赋值时,就等于undefined;(2)调用函数时,应该提供的参数没有提供,该参数等于undefined;(3)对象没有赋值的属性,该属性的值为undefined;(4)函数没有返回值时,默认返回undefined)

  • 作者:bdevy
  • 原文链接:https://blog.csdn.net/qq_38328762/article/details/100004043
    更新时间:2022年6月10日09:59:50 ,共 1951 字。