JavaScript的种类自动转换的状况-betway必威体育下载_必威app网址|必威体育娱乐

点击右上方赤色按钮重视“web秀”,让你真实秀起来

前语

JavaScript类型在什么情况下会发作类型主动转化

咱们都知道 JavaScript 是弱类型言语,并且 JavaScript 声明变量的时分并没有预先确定的类型,变量的类型便是其值的类型,也便是说变量当时的类型由其值所决议,夸大点说上一秒种的String,下一秒或许便是个Number类型了,这个进程或许就进行了某些操作发作了强制类型转化。尽管弱类型的这种不需求预先确定类型的特性给咱们带来了便当,一起也会给咱们带来困扰,为了能充分利用该特性就必须把握类型转化的原理。

下面咱们来介绍JavaScript类型在什么情况下会发作类型主动转化:

什么时分主动转化为string类型

JavaScript类型在什么情况下会发作类型主动转化

一、在没有目标的前提下

字符串的主动转化,首要发作在字符串的加法运算时。当一个值为字符串,另一个值为非字符串,则后者转为字符串郁金香图片。

'2' + 1网易暴雪掌管人小媛 // '21' 
'2' + true // "2true"
'2' + false // "2false"
'2' + undefined // "2undefined"
'2' + null // "2null"

二、当有目标且与目标+时分

//toString的目标 
var obj2 = {
toString:function(){
return 'a'
}
}
console.log('2'+obj2)
//输出成果2a

//惯例目标
var obj1 = {
a:1,
b:2
}
console.log('2'+obj1);
//输出成果 2[object Object]

//几种特别目标
'2' + {} // "2[object Object]"
'2' + [] // "2"
'2' + function (){} // "2funJavaScript的品种主动转化的情况-betway必威体育下载_必威app网址|必威体育文娱ction (){}"
'2' + ['koala', 1] // 2koala,1

JavaScript类型在什么情况下会发作类型主动转化

string类型转化开发进程中或许犯错的点:

var obj = { 
width: '100'
};

obj.width + 20 // "10020"

什么时分主动转化为Number类型

一、有加法运算符,可是无String类型的时分,都会优先转化为Number类型

true + 0 // 1 
true + true // 2
true + fa跑车图片lse //1

二、除了加法运算符,其他运算符都会把运算主动转成数值。

'5' - '2' // 3 
'5' * '2' // 10
true - 1 // 0
false - 1 // -1
'1' - 1 // 0
'5' * [] // 0
false / '5' // 0
'abc' - 1 // NaN
null + 1 // 1
undefined + 1 // NaN

//一元运JavaScript的品种主动转化的情况-betway必威体育下载_必威app网址|必威体育文娱算符(留意点)
+'abc' // NaN
-'abc' // NaN
+true // 1
-false // 0

留意:null转为数值时为0,高蛋白食物而undefined转为数值时为NaN。

JavaScript类型在什么情况下会发作类型主动转化

什么时分进行布尔转化

一、布尔比较时

二、if(obj) , while(obj)等判别时或许 三元运算符只能够包括布尔值

条件部分的每个值都相当于false,运用否湘鲫定运算符后,就变JavaScript的品种主动转化的情况-betway必威体育下载_必威app网址|必威体育文娱成了true

if ( !undefined 
&& !null
&& !0
&& !NaN
&& !''
) {
console.log('true');
} // true

//下面两种情况也会转成布尔类型
expression ? true : false
!越野飞车! expression

js中的数据类型判别

JavaScript类型在什么情况下会发作类型主动转化

三种办法,分别为 typeof、instanceof 和Object.prototype.toStdecadering()

一、typeof

经过 typeof操作符来判别一个值归于哪种根本类型。

typeof 'seymoe' // 'string' 
typeof true // 'boolean' 岫玉
typeof 10 // 'number'
typeof Symbol() // 'symbol'
typeof null // 'object' 无法断定是否为 null
typeof undefined // 'undefined' JavaScript的品种主动转化的情况-betway必威体育下载_必威app网址|必威体育文娱

typeof {} // 'object'
typeof [] // 'object'
typeof(() => {}) // 'function'

上面代码的输出成果能够看出,

1、null 的断定有差错,得到的成果 假如运用 typeof,null得到的成果是object

2、操JavaScript的品种主动转化的情况-betway必威体育下载_必威app网址|必威体育文娱作符对目标类型及其子类型,例如函数(可调用目标)、数组(有序索引目标)等进行断定,则除了函数都会得到 object 的成果。

综上能够看出typeOf关于判别类型还有一些刕缺乏,在目标的子类型和null情况下。

二、instanceof

经过 instanceof 操作符也能够对目标类型进行断定,其原理便是测验结构函数的prototype 是否呈现在被检测目标的原型链上。

[] instanceof Array // true 
({}) instanceof Object // true
(()=>{}) instanceof Function // true

留意:instanceof 也不是全能的。 举个比如:

let arr = [] 
let obj = {}
arr instanceof Array // true
arr instanceof Object // tr凭鬼屋ue
obj instanceof Object // true

在这个比如中,arr 数组相当于 new Array() 出的一个实例,所以 arr.__proto__ === Array.prototype,又由于 Array归于 Object 子类型,即Array.prototype.__proto__ === Object.prototype,因而 Object 结构函数在 arr 的原型链上。所以 instanceof 依然无法高雅的判别一个值究竟归于数组仍是一般目标。

Object.prototype.toStrpt950ing() 能够说是断定 JavaScript 中数据类型的终极解决办法了,详细用法请看以下代码:

Object.prototype.toString.call({}) // '[object Object]' 
Object.prototype.toString.call([]) // '[object Array]'
Object.prototype.toSt兰桂坊ring.call(() => {}) // '[object Function]'
Object.prototype.toString.ca燃气灶ll('seymoe') // '[object String]'
Object.prototype.toString.call(1) // 黑镜第一季'[object Number]'
Obj结肠炎的症状及医治ect.prototype.toString.call(true) // '[object Boolean]'
Object.prototype.toSJavaScript的品种主动转化的情况-betway必威体育下载_必威app网址|必威体育文娱tring.call(Symbol()) // '[object Symbol]'
Object.prototype.toString.call(null) // '[object Null]'
Object.JavaScript的品种主动转化的情况-betway必威体育下载_必威app网址|必威体育文娱prototype.toString.call(undefined) // '[object Undefined]'

Object保利集团.prototype.toString.call(new Date()) // '[object Date]'
Object.prototype.toString.call(Math) // '[object Math]'
Object.prototype.toString.call(new Set()) // '[object Set]'
Object.prototype.toString.call(n嗟叹语ew WeakSet()) // '[object WeakSet]'
Object.prototype.toString.call(new Map()) // '[object Map]'
Object.prototype.toString.call(new WeakMap()) // '[object WeakMap]'

JavaScr鸵鸟ipt类型在什么情况下会发作类型主动转化

咱们能够发现该办法在传入任何类型的值都能回来对应精确的目标类型。用法虽简单明了,但其中有几个点需求了解清楚:

1、该办法实质便是依托Object.prototype.toString()办法得到目标内部特点 [[Class]]

2、传入原始类型却能够断定出成果是由于对值进行了包装

3、null 和 undefin孙松君ed 能够输出成果是内部完成有做处理

总结

要点学习几品种型主动转化,实践开发中会常常遇到这样的bug,数值大还好发现,越小越简单疏忽。

喜爱小编或许觉得小编文章对你有协助的,能够点击一波重视哦!

评论(0)