一、任务目标(建议完成时间:0.5小时)
理解并掌握常见场景中隐式类型转换的规律
二、任务背景
每一个变量或者值都有其对应的类型,在JavaScript中如Number、String、Boolean、Array、Object等。在强类型的语言中,不同类型的变量或值之间不能进行运算;在弱类型的语言中,不同类型的变量或值可进行一些运算,这主要是因为解释器做了隐式类型转换的工作。
三、任务内容
1、字符串和数字的运算
1.1 字符串和数字进行加运算时,会将数字转换成字符串,然后和另一个字符串进行拼接
-
var num1 = '123'
-
var num2 = 12
-
var num3 = num1 + num2
-
console.log(num3) // 预期输出:'12312'
1.2 字符串和数字进行减、乘、除运算,以及大小比较时,会将字符串转换成数字,再和另一个数字进行运算或比较
-
var num1 = '123'
-
var num2 = 12
-
var num3 = num1 - num2
-
console.log(num3) // 预期输出:111
-
var num1 = '123'
-
var num2 = 12
-
var num3 = num1 * num2
-
console.log(num3) // 预期输出:1476
-
var num1 = '123'
-
var num2 = 12
-
var num3 = num1 / num2
-
console.log(num3) // 预期输出:10.25
-
var num1 = '123'
-
var num2 = 15
-
var t = num1 > num2
-
console.log(t) // 预期输出:true
2、各种值转换成布尔值
2.1 数字0,空字符串"",null,undefined 转成布尔值的时候都是false
undefined,一个特殊值,通常用于指示变量尚未赋值。在高级程序设计语言设计应用程序时,用于指示变量尚未用单等号进行赋值(常量未定义)。
2.2 非0数字,非空字符串转成布尔值的时候都是true
2.3 任何数组(即使是空数组),任何对象(即使是空对象) 转成布尔值的时候都是true
-
var a = 0
-
if (a) {
-
console.log('hello')
-
} else {
-
console.log('world')
-
}
-
// 当a=0或""或null或undefined的时候,预期输出:world
-
// 当a=[]或空对象的时候,预期输出:hello
-
// 当a=-1或"abc"时候,预期输出:hello