序言
在我们应用JavaScript编写代码时,数据转换是一个非常重要的定义。JavaScript是一种弱类型语言,这就意味着自变量会自动转换成另一种种类,而无需大家确切地特定。在这篇文章中,我们将要讨论JavaScript数据转换这个概念、转换规则,并对隐式转换展开分析。
数据转换这个概念
JavaScript里的数据转换是指由一种类别的数据交换为另一种种类的信息。这能通过多种形式完成,比如强制转换和隐式转换。
在强制转换中,大家确切地将一种数据类型转换为另一种基本数据类型。但在隐式转换中,JavaScript全自动将一种数据类型转换为另一种基本数据类型,而不需要大家显式地特定。
5 种转换规则
以下属于一些常见的JavaScript数据转换方法与编码案例:
1. 字符串数组转化为数字
可以用parseInt()和parseFloat()方式将字符串数组转化为数字。
var str = "123";
var num = parseInt(str);
console.log(num); // 123
var floatStr = "3.14";
var floatNum = parseFloat(floatStr);
console.log(floatNum); // 3.14
将字符串数组转化为数字的另一种方法是什么应用一元加减法操作符
。
"1.1" "1.1" = "1.11.1"
( "1.1") ( "1.1") = 2.2
// 留意:添加括弧为清晰考虑,不是必要的。
2. 数据转换为字符串
可以用toString()方式将数据转换为字符串。
var num = 123;
var str = num.toString();
console.log(str); // "123"
这儿需要特别提下加减法操作符( ),在涉及到的数字和字符串数组的关系式中应用加减法操作符( ),JavaScript 会将数据转换成字符串。 比如,观查下列句子:数据转换为字符串
x = "The answer is " 42; // "The answer is 42"
y = 42 " is the answer"; // "42 is the answer"
需注意:在涉及到别的操作符(译注:如下边的加号'-')时,JavaScript 语言表达不把数据变成字符串数组。
比如(译注:第一例是数学计算,第二例是字符串数组计算):
"37" - 7 // 30
"37" 7 // "377"
3. 布尔值转换为字符串或数据
可以用toString()方式将布尔值转换为字符串。将布尔值转化为数字时,true转换成1,false转换成0。
var bool = true;
var str = bool.toString();
console.log(str); // "true"
var num = bool;
console.log(num); // 1
4. 对象转换为原始值
当将目标转换为字符串或数据时,JavaScript就会自动启用对象toString()或valueOf()方式。
var obj = { x: 1, y: 2 };
var str = obj.toString();
console.log(str); // "[object Object]"
var num = obj;
console.log(num); // NaN
5. 空字符和未声明值转化为数字或字符串数组
将null转化为数字时,结果显示0。将undefined转化为数字时,结果显示NaN。将null或undefined转换为字符串时,结果显示"null"和"undefined"。
var num = null;
console.log(num); // 0
var num2 = undefined;
console.log(num2); // NaN
var str = String(null);
console.log(str); // "null"
var str2 = String(undefined);
console.log(str2); // "undefined"
隐式转换
在JavaScript中,隐式转换一般出现于操作符实际操作或较为操作过程中。
比如,当使用减号操作符( )连接字符串和数字时,数据能被全自动转换为字符串,然后与另一个字符串数组连接在一起。可是,假如其中一个操作数并不是预想的种类,则可能会致使错误或意料之外的结论。
下列是一个事例:
var num = 10;
var str = "20";
var result = num str;
console.log(result); // "1020"
在这样一个例子中,自变量num是数字类型,而自变量str是字符串类型。因为减号操作符( )可用作连接字符串和数字,因而JavaScript将数据10隐式地转换为字符串"10",再将字符串数组"10"和字符串数组"20"连接在一起,获得了"1020"。
这类隐式类型转换可能会致使大家期待以外的结论。为了防止这样的事情,我们可以用严苛相同操作符(===)而非相当于操作符(==),而且在开展数据转换时应显式地特定种类。
比如,我们可以用Number()函数公式将字符串数组转化为数字,或使用String()函数公式将数据转换为字符串。
下列是一个事例:
var num = 10;
var str = "20";
var result = num Number(str);
console.log(result); // 30
在这样一个例子中,大家显式地把字符串数组"20"转化为数字,再将数据10和数字20求和,获得了30。这样大家能够避免因为隐式类型转换所导致的出现意外结论。
因而,为了防止隐式类型转换产生潜在难题,我们应该在编写代码时需注意,尽量显式地特定种类,应用严苛相同操作符(===)而非相当于操作符(==),并且在必须的情况下去类型检查。
汇总
数据转换是JavaScript中的一个重要定义。JavaScript带来了很多方式来完成不同种类中间的转变,比如parseInt()、parseFloat()、toString()等。在编写代码时,大家要特别注意隐式转换可能会带来潜在难题,及其怎样避免。