使用JavaScript的一些小技巧--数据类型转换(转载)

转换为布尔值

布尔值除了truefalse之外,JavaScript还可以将所有其他值视为“真实的”或“虚假的”。除非另有定义,JavaScript中除了0''nullundefinedNaNfalse之外的值都是真实的

我们可以很容易地在真和假之间使用!运算符进行切换,它也会将类型转换为Boolean。比如:

const isTrue = !0; 
const isFasle = !1; 
const isFasle = !!0 // !0 => true,true的反即是false 

console.log(isTrue) 
> Result: true 

console.log(typeof isTrue) 
> Result: 'boolean'

这种类型的转换在条件语句中非常方便,比如将!1当作false

转换为字符串

 我们可以使用运算符+后紧跟一组空的引号''快速地将数字或布尔值转为字符串:

const val = 1 + '' 
const val2 = false + '' 

console.log(val) 
> Result: "1" 

console.log(typeof val) 
> Result: "string" 

console.log(val2) 
> Result: "false" 

console.log(typeof val2) 
> Result: "string"

转换为数值

上面我们看到了,使用+紧跟一个空的字符串''就可以将数值转换为字符串。相反的,使用加法运算符+可以快速实现相反的效果。

let int = '12' 
int = +int 

console.log(int) 
> Result: 12 

console.log(typeof int) 
> Result: 'number'

用同样的方法可以将布尔值转换为数值:

console.log(+true) 
> Return: 1 

console.log(+false) 
> Return: 0

在某些上下文中,+会被解释为连接操作符,而不是加法运算符。当这种情况发生时,希望返回一个整数,而不是浮点数,那么可以使用两个波浪号~~。双波浪号~~被称为按位不运算符,它和-n - 1等价。例如, ~15 = -16。这是因为- (-n - 1) - 1 = n + 1 - 1 = n。换句话说,~ - 16 = 15

我们也可以使用~~将数字字符串转换成整数型:

const int = ~~'15' 

console.log(int) 
> Result: 15 

console.log(typeof int) 
> Result: 'number'

同样的,NOT操作符也可以用于布尔值: ~true = -2~false = -1

浮点数转换为整数

 平常都会使用Math.floor()Math.ceil()Math.round()将浮点数转换为整数。在JavaScript中还有一种更快的方法,即使用|(位或运算符)将浮点数截断为整数。

console.log(23.9 | 0); 
> Result: 23 

console.log(-23.9 | 0); 
> Result: -23

|的行为取决于处理的是正数还是负数,所以最好只在确定的情况下使用这个快捷方式。

如果n是正数,则n | 0有效地向下舍入。如果n是负数,它有效地四舍五入。更准确的说,该操作删除小数点后的内容,将浮点数截断为整数。还可以使用~~来获得相同的舍入效果,如上所述,实际上任何位操作符都会强制浮点数为整数。这些特殊操作之所以有效,是因为一旦强制为整数,值就保持不变。

|还可以用于从整数的末尾删除任意数量的数字。这意味着我们不需要像下面这样来转换类型:

let str = "1553";
Number(str.substring(0, str.length - 1)); 
> Result: 155

我们可以像下面这样使用|运算符来替代:

console.log(1553 / 10 | 0) 
> Result: 155 

console.log(1553 / 100 | 0)
> Result: 15

使用!!操作符转换布尔值

有时候我们需要对一个变量查检其是否存在或者检查值是否有一个有效值,如果存在就返回true值。为了做这样的验证,我们可以使用!!操作符来实现是非常的方便与简单。对于变量可以使用!!variable做检测,只要变量的值为:0null" "undefined或者NaN都将返回的是false,反之返回的是true。比如下面的示例:

function Account(cash) { 
    this.cash = cash; 
    this.hasMoney = !!cash; 
} 

var account = new Account(100.50); 
console.log(account.cash); 
> Result: 100.50 

console.log(account.hasMoney); 
> Result: true var emptyAccount = new Account(0); 

console.log(emptyAccount.cash); 
> Result: 0 

console.log(emptyAccount.hasMoney); 
> Result: false

在这个示例中,只要account.cash的值大于0,那么account.hasMoney返回的值就是true。

还可以使用!!操作符将truthyfalsy值转换为布尔值:

 

!!""        // > false 
!!0         // > false 
!!null      // > false 
!!undefined // > false 
!!NaN       // > false 
!!"hello"   // > true 
!!1         // > true 
!!{}        // > true 
!![]        // > true

 


原文: https://www.w3cplus.com/javascript/javascript-tips.html © w3cplus.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值