You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
var a = 42;
var b = a + ""; // 隐式强制类型转换
var c = String( a ); // 显式强制类型转换
假值列表
null
undefined
+0 -0 NaN
false
"" ''
显示强制类型转换
字符串与数字
var a = 42;
var b = String( a );
var c = "3.14";
var d = Number( c );
// 除此之外,还有
var a = 42;
var b = a.toString();
var c = "3.14";
var d = +c;
b; // "42"
d; // 3.14
上例中 +c 是 + 运算符的一元(unary)形式(即只有一个操作数)。 + 运算符显式地将 c 转
换为数字,而非数字加法运算
1 日期转换为数字
var d = +new Date( "Mon, 18 Aug 2014 08:53:06 CDT" );
d; // 1408369986000
值类型转换
类型转换发生在静态类型语言的编译阶段,而强制类型转换则发生在动态类型语言的运行时。
而在Javascript中统称为强制类型转换,可通过隐式强制类型转换和显示强制类型转换来区分。
假值列表
显示强制类型转换
字符串与数字
上例中 +c 是 + 运算符的一元(unary)形式(即只有一个操作数)。 + 运算符显式地将 c 转
换为数字,而非数字加法运算
1 日期转换为数字
2 奇特的 ~运算符(即字位操作“非”)
~ 返回 2 的补码。
~x 大致等同于 -(x+1) 。很奇怪,但相对更容易说明问题:~42; // -(42+1) ==> -43
用处一: ~ 和 indexOf() 一起可以将结果强制类型转换(实际上仅仅是转换)为真 / 假值:
如果 indexOf(..) 返回 -1 , ~ 将其转换为假值 0 ,其他情况一律转换为真值。
用处二:字位截除
~~ 中的第一个 ~ 执行 ToInt32 并反转字位,然后第二个 ~ 再进行一次字位反转,即将所有字位反转回原值,最后得到的仍然是 ToInt32 的结果
~~-49.6; // -49
**记住:**永远给parseInt()设置第二个参数。
The text was updated successfully, but these errors were encountered: