JS中数据类型转换

JS数据类型转换

JS中的数据类型

JS基本有6种简单数据类型:
String
Number
Boolean
Null
undefined
Symbol
1种复杂的数据类型:
Object。
在写程序中,数据类型是非常重要的,如果不了解当前变量的数据类型可能出现各种各样的bug。
例如:

var a=1+2+"d";
        var b="d"+1+2;
        console.log(a,b);

输出结果分别是3d和d12。这是因为a中先计算1+2,两个均为数字类型,则进行相加操作,碰到字符d,就将两个字符进行拼接;而b中先碰到d和1,直接进行拼接形成d1,此时已经是字符串类型,碰到2也会进行拼接。

JS中使用typeop关键字进行数据类型判断。

<script>
        var a=1+2+"a";
        var b="a"+1+2;
        console.log(typeof a,typeof a);

返回a和b的数据类型均为string。

其他情况举例:

typeof "John"                 // 返回 string
typeof 3.14                   // 返回 number
typeof false                  // 返回 boolean
typeof [1,2,3,4]              // 返回 object
typeof {name:'John', age:34}  // 返回 object
typeof new Date()             // 返回 object
typeof function () {}         // 返回 function
typeof myCar                  // 返回 undefined (如果 myCar 没有声明)
typeof null                   // 返回 object
typeof undefined			  // 返回undefined
typeof NaN                    // 返回 number

需要注意的是typeof null返回为object,因为特殊值null被认为是一个空的对象引用。
另外,undefined值是派生自null值的,因此ECMA-262规定对它们的相等性测试要返回true。

console.log(undefined == null); //返回true

Symbol:ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值。比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突。如果有一种机制,保证每个属性的名字都是独一无二的就好了,这样就从根本上防止属性名的冲突。

JS中的数据类型转换

  1. 转换为字符串。
    方法:使用 .toString或者String()(.toString()方法不可以转null和underfined,String则无此限制)。

    var a = 123;
    var b = true;
    var c = null;
    var d;
    console.log(typeof a, typeof b, typeof c, typeof d);
    console.log(
        typeof a.toString(),
        typeof b.toString(),
        typeof c.toString(),
        typeof d.toString()
    );
    

    .toString()方法数值型和布尔型转换后输出string,而null和undefined则会直接报错。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    而使用String()则能正常转换。
    在这里插入图片描述
    隐式转换:在+两边有一个操作符为String类型,会将两个操作符拼接为一个字符串。

    var a="abc";
            var b=123;
            console.log(typeof (a+b));//返回string
    

    注:
    toString可以将任何数字转换为任意进制,写法:数据.toString(进制)。进制必须大于等于2并且小于等于36,因为数字加字母共36个。

  2. 转换为数值。
    方法:使用Number(),parseInt(),parseFloat()。
    number()可以用于任何数据类型,而另外两个函数则专门用于把字符串转换为数值。

    如果是Boolean,true和false将分别被转换为1和0。
    如果是数字值,只是简单传入和返回。
    如果是null值,返会0。
    如果是undefined,返回NaN。

    NaN:
    NaN(Not a Number),即非数值是一个特殊的数值,
    这个数值用于表示一个本来要返回数值的操作数未返回数值的情况。
    NaN本身有两个特点:
    1.任何涉及NaN的操作(例如NaN*10,NaN/10)都会返会NaN。
    2.NaN与任何数值都不相等,包括NaN本身。
    可以使用isNaN()判断值类型是否为NaN,返回值为true或false。
    

    parseInt()在转换字符串的时会忽略字符串前的空格,直至找到第一个非空格字符。如果第一个字符不是数字字符或者是负号,返回NaN。
    parseInt()可以接受两个参数,第一个为要转换的参数,第二个为基数(进制)。如果不指定基数意味着让parseInt()自己决定如何解析,因此为了避免错误的解析,建议指定基数。
    parseFloat()用于转换浮点数。

  3. 转换为布尔类型。
    方法:Boolean()。
    布尔类型只有true和false两个值,所以任意值转换后均为true或false。
    转换规则如下:
    string除空字符串外其他转换后均为true;
    number除0和NaN外其他转换后均为true;
    object除null外其他转换后均为true;
    注:使用!+变量可以将上述规则反转并隐式转换为Bool值。
    例:console.log(!0);//返回true

所有对象的布尔值都是true,甚至连false对应的布尔对象也是true。
请注意,空对象{}和空数组[]也会被转成true。

console.log(Boolean(new Boolean(false)))// Boolean对象会转成true
console.log(Boolean([])) // 空数组会转成true
console.log(Boolean({})) // 空对象会转成true

&& 表达式从第一个开始,遇到值为false的表达式,则返回表达式本身,否则返回最后一个表达式

var obj = new Boolean(false);
console.log(obj && true);//true
console.log(true && obj);//Boolean {false}

千锋逆战,等你来战。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值