JS数据类型之问---转换篇

[]==![]的结果是什么?为何?

结果是:true segmentfault

ECMAScripth中 相等操做符==,若是两个操做数相等,则返回true,然而这种操做符会先强制转换操做数,再比较相等性

基本的转换规则数组

  • 若是有一个操做数是布尔值,则在比较相等性以前先将其转换为数值——false转换为0,而true转换为1
  • 若是一个操做数是字符串,另外一个操做数是数值,在比较相等性以前先将字符串转换为数值
  • 若是一个操做数是对象,另外一个操做数不是,则调用对象的valueOf()方法,用获得的基本类型值按照前面的规则进行比较

关于本题bash

  • 根据运算符优先级,!的优先级大于==,因此先执行![],而可将变量转换成布尔类型,nullundefinedNaN以及空字符串('')取反都为true,其他都为false。因此![]的运算结果为false
  • 题目变成了[]==false ,根据上面的规则,会把false转换成0
  • 而若是一个操做数是对象,另外一个操做数不是,则调用对象的valueOf()方法,用获得的基本类型值按照前面的规则进行比较,若是对象没有valueOf()方法,则调用toString()
  • 对于空数组,[].toString() -> " "(空字符串)
  • 也就是 " "== 0 一个是字符串,另外一个是数值,则比较以前转换为数值
  • 获得0==0 ,返回true
  • [] == ! [] -> [] == false -> [] == 0 -> '' == 0 -> 0 == 0 -> true

==和===的区别

而若是这里的“==”换成“===” spa

能够获得:code

  • 相等和不相等——先转换再比较 (==)
  • 全等和不全等——仅比较而不转换 (===)

JS中类型转换有几种?

1、JS显式数据类型转换cdn

  • 转数字(Number类型)
// Number 转换 
var a = '123';
a = Number(a);

//parselnt转换
var a = '123';
a = Number(a

//parseFloat转换,与parseInt同样,区别是能够保留小数
复制代码
  • 转字符串(String)
//String()
var a = 123;a = String(a);

//toString()
var a = 123; 
a = a.toString();    //undefined,null不能用toString。
复制代码
  • 转布尔类型(Boolean)
var a ='true';
a = Boolean(a);

// 在进行boolean转换的时候全部的内容在转换之后结果都是true
//除了:false、”“(空字符串)、0、NaN、undefined,这几个为true
复制代码

2、JS隐式数据转换对象

  • Number
var a = '123';
a=+a;
//加减乘除以及最余均可以让字符串隐式转换成number。
复制代码
  • String
var a = 123;
a = a + '';
复制代码
  • boolean
var a = 123;
a = !!a;
复制代码

3、JS值类型之间的数据类型转换blog

  • 数字和字符串使用+运算符
//数字和字符串若是使用+运算符进行操做,那么会将数字先转换为字符串,而后进行 
字符串链接操做:
var text = 'asd';
var num = 123;
alert(text+num);
复制代码
  • 布尔值参与的+运算符操做
//若是有布尔型参与,那么首先会将布尔值转换为对应的数字或者字符串,而后再进行相应的 
字符串链接或者算数运算。
var bool = true;
var num = 8;
console.log(bool + num); -> 8

var bool = true;
var num = "8";
console.log(bool + num); -> true8
复制代码
  • 减法操做
//若是进行减法操做,那么两个操做数都会先被转换为数字,而后在进行算数运算
var bool = true;
var num = "8";
console.log(bool - num);  -> -7 
复制代码
  • ==等性运算
//undefined和null比较特殊,它们两个使用==运算符返回值是true
console.log(undefined==null); -> true

//其余值类型进行比较的时候都会将运算数转换为数字
console.log("3"==3);

复制代码

对象转原始类型是根据什么流程运行的?

对象转原始类型总结 来自CSDNip

相关文章
相关标签/搜索