js隐式转换个人总结

隐式转换在js中通常可以通过parseInt(),  Number(), String(), Boolean()等函数转换成对应的数据类型, 但通常为了简便, 我们会用特殊的写法进行转换, 比如:

var a = 5;
console.log( a + ‘‘ );    // 输出‘5‘, 将number类型转成string类型

  

//这里是将string转换成number类型

console.log( +‘56‘ );    //输出 56, 等价于Number(a)
console.log( -‘56 );     //输出-56

console.log( +‘‘ );      //0
console.log( +‘34A‘ ); // 输出NaN
console.log( -‘34A‘ ); // 输出NaN
console.log( parseInt(‘34A‘, 10) ); //输出34;
//parseInt第二个参数最好传入10, 如果不传, 在ES3中, 默认是转换成8进制

console.log( +[] );    //0

  

  

//将string或number转成boolean值

console.log( !5 );      //false, 此过程会先将5转成true, 然后取非
console.log( !!5 );     //true, 等价于Boolean(5)
console.log( !!‘2‘ );   //true
console.log( !!‘‘ );    //false
console.log( !!0 );     //false
console.log( !![] );    //true
console.log( !!{} );    //true
console.log( !!null );      //false
console.log( !!undefined ); //false
console.log( !!/abc/g  );   //true

总结:

  1. 任何数据类型和字符串相加, 得到的都是字符串.
  2. 只有空数组(如果数组中有一个元素, 且这个元素也只能被转成0),  空字符串, 全是空格的字符串,  false 才会被转成0, 其他的看情况
  3. 只有null, undefined, 空字符串, 0, NaN才会被转成false, 其他全是true
  4. 如果你能确保字符串是由纯数字组成, 可以在前面用"+"将其转换成number类型, 省时省力.(jquery中不少这种写法)
  5. 判断语句中还是用 === 来进行严格判断, 避免不必要的麻烦

因此, [] == ![] 得到的是true,  因为右边的 ![] 会被先转换成 false, 然后因为是==且两边数据类型不一样, 所以两边会被转成number进行比较, 左边的[]转成number是0, 右边false也转成0, 所以相等返回true

需要注意一点:  null == undefined 比较中得到的是true

以上纯属个人总结,  如有错误, 欢迎指正.

时间: 2024-10-10 07:51:30

js隐式转换个人总结的相关文章

一个有趣的js隐式转换的问题

一个有趣的js隐式转换的问题 在chrome的控制台中打印一下表达式 [] + {} //结果为 [object object] 然后调整顺序打印 {} + [] //结果为 0 然后将两个表达式组合一下 {} + [] === [] + {} //true wtf??? 原理解释如下: 一般的类型转换的时候, 面对 + , 首先调用 valueOf^[1]进行转换, 如果转换的结果不是 基本类型, 那么采用 toString() 方法进行转换, 所以 []+{} //结果Wie [object

再说js隐式转换

再说js隐式转换 自己整理的一个整体规则如下: Date 默认 走 toString, 如果 toString 返回的是对象, 那么查看 valueOf 其他对象的转换, 默认走 valueOf, 但是如果 valueOf 返回的是对象, 那么尝试 toString //比如示例如下: //默认的对象隐式转换是走 valueOf var o1 = { valueOf: function(){ return 1; }, toString: function(){ return 9; } } con

JS隐式转换

 首先,JS数据类型分为6种,分别是null.undefined.boolean.string.number.object.其中,object是引用类型,其余5种是基本类型或者叫做原始类型. 类型转换,就是隐式转换!不同类型的变量相比较时要先转换类型.隐式转换通常发生在运算符加.减.乘.除,以及大于.小于等等. typeof()方法用来打印判断某个元素是什么数据类型. 1.字符串和数字的相互转换: (1).字符串 加 数字 || 数字 加 字符串,数字 => 字符串 eg: typeof("

JS笔记(二):隐式转换

最近刚开始复习JS的基础知识,看到隐式转换这一块,发现它的规则很多,红宝书上列出的框框又有些冗杂,所以这里我借一个式子总结一下其中的规律以及一些有趣的现象.

js学习日记-隐式转换相关的坑及知识

隐式转换比较是js中绕不过去的坎,就算有几年经验的工程师也很有可能对这块知识不够熟悉.就算你知道使用===比较从而避免踩坑,但是团队其它成员不一定知道有这样或那样的坑,有后端语言经验的人常常会形成一个思维误区:"JS这门语言很简单,看看语法再找几个例子就能操作DOM,编写特效了".随着react.vue.html5等技术在项目中大规模使用,越来越多的项目中使用了大量的JS,甚至整个项目都用JS来写(例如基于webapi的SPA管理后台.微信小程序.微信H5应用,Hybrid app),

js 的隐式转换与显式转换

隐式转换 1.undefined与null相等,但不恒等(===) 2.一个是number一个是string时,会尝试将string转换为number 3.隐式转换将boolean转换为number,0或1 4.隐式转换将Object转换成number或string,取决于另外一个对比量的类型 5.对于0.空字符串的判断,建议使用 “===” . 6.“==”会对不同类型值进行类型转换再判断,“===”则不会.它会先判断两边的值类型,类型不匹配时直接为false. undefined == nu

javascript隐式转换详解

Javascript是web前端开发的必学技术,今天和大家分享的就是javascript的基础知识隐式转换,希望可以帮助大家更好的学习. 转换成布尔类型假 undefined->falSe null->falSe 数值型0或0.0或NaN->falSe 字符串长度为0->falSe 其它对象->true <html> <head> <meat charSet=”utf-8”> <title></title> <

javascript 隐式转换 == 之 [ ]==![ ] 结果为true,而{ }==!{ } 结果为false

ECMAScript中的隐式转换 == 会先将两边转换成相似的类型,再执行比较: ①.如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值——false转换为0,而true转换为1:②.如果一个操作数是字符串,另一个操作数是数值,在比较相等性之前先将字符串转换为数值③.如果一个操作数是对象,另一个操作数不是,则调用对象的valueOf()方法,用得到的基本类型值按照前面的规则进行比较,如果对象没有valueOf()方法,则调用 toString(): 顺便提一下,valueOf() 方法

Atitit.变量的定义&#160;获取&#160;储存&#160;物理结构&#160;基本类型简化&#160;隐式转换&#160;类型推导&#160;与底层原理&#160;attilaxDSL

Atitit.变量的定义 获取 储存 物理结构 基本类型简化 隐式转换 类型推导 与底层原理 attilaxDSL 1.1. $ 美元字符, php 黑头1 1.2. 默认变量的范围和声明:1 1.3. 变量的存储,储存在变量池里Map(varName,varVal)1 1.3.1. 复合变量1 1.4. 变量类型简化: 字符串 数字,  bool1 1.5. 变量自动隐式转换2 1.6. 类型推导2 2. 参考 复合变量2 1.1. $ 美元字符, php 黑头 1.2. 默认变量的范围和声明