如果把通过函数或方法调用,明确的将某种类型转换成另一种类型称为显示转换 ,相反则称为隐式类型转换 。google和维基百科中没有找到“显示类型转换”,“隐式类型转换”的字眼。暂且这么称呼。
一、 运算中存在的隐式类型转换
1, “+”运算符
1
2
|
var a = 11, b = '22' ;
var c = a + b;
|
这里引擎将会先把a变成字符串"11"再与b进行连接,变成了"1122"。有人会有疑问,为什么不把b变成数字22再进行算术加运算呢,这样的话c就是33了。没有为什么,当运算符“+”两边一个是数字类型,一个是字符串类型时,js引擎规定进行字符串连接运算而非算术加运算。利用运算符“+”这个特性,可以很方便的将Number转换成String。如
1
2
3
4
|
var a = 11;
alert( typeof a); //-->number
a = a + '' ;
alert( typeof a); //-->string
|
2,“-”运算符
“-”可以是一元运算符(取负),也可以是二元(减法运算)的。如
1
2
3
|
var a = 11, b = '5' ;
var c = a - b;
alert( typeof c); //--> number
|
这里与上面的“+”相反,会把字符串b隐式的转换成数字5再进行算术减法运算。利用这个特性,可以很方便的将String转换成Number
1
2
3
|
var a = '11' ;
a = a - '' ;
alert( typeof a); // -->number
|
二、 语句中存在的隐式类型转换
1,if
1
2
3
4
|
var obj = {name: 'jack' }
if (obj){
//do more
} |
这里会把obj隐式的转换成Boolean类型
2,while
1
2
3
4
|
var obj = {name: 'jack' }
while (obj){
//do more
} |
同if
3,for in时的类型转换
定义对象字面量时发生从标识符到字符串的隐式转换。
1
2
3
4
|
var person = { 'name' : 'jack' , "age" :20,school: 'PKU' };
for ( var a in person){
alert(a + ": " + typeof a);
} |
这里name,age分别加单/双引号以强调其为String类型,school没有加单/双引号。我们遍历下该对象的属性,查看其类型。发现school也被隐式的转换成了String类型。
数组的索引其实也是字符串类型。这着实令人惊叹,但事实的确如此。如
1
2
3
4
|
var ary = [1,3,5,7];
for ( var a in ary){
alert(a + ": " + typeof a);
} |
三、 alert时存在的隐式类型转换
1
2
3
4
|
String.prototype.fn = function (){ return this };
var a = 'hello' ;
alert( typeof a.fn()); //-->object
alert(a.fn()); //-->hello
|
给String原型上添加了个fn方法,该方法返回this,我们知道this可以理解成当前类的实例对象,既然是对象那么typeof a.fn()自然返回是object了。
关键是最后的alert(a.fn()),a.fn()返回的明明是对象,但却隐式的转换成了字符串“hello”显示。
同样的情况发生在数字类型上,如
1
2
3
4
|
Number.prototype.fn = function (){ return this };
var a = 10;
alert( typeof a.fn()); //-->object
alert(a.fn()); //-->10
|
a.fn()返回的是对象类型,但在alert(a.fn())时会隐式的将其转换成数字。
相关推荐
JavaScript中的隐式类型转换是其弱类型特性的重要体现,它允许...因此,在编写代码时,明确类型转换并避免过度依赖隐式转换是提高代码可预测性和安全性的重要策略。理解这些转换规则有助于编写更健壮的JavaScript代码。
因此,在编写JavaScript代码时,应尽量明确类型,避免依赖隐式转换,以提高代码的可读性和健壮性。在处理不同类型的数据时,可以使用`Number()`、`parseInt()`和`parseFloat()`等函数进行显式类型转换,以确保得到...
JavaScript中的隐式强制转换是指在进行运算或比较时,不同类型的数据会自动转换成适合的类型,以保证表达式的正确执行。这种转换不依赖于开发者明确的类型转换命令,而是由JavaScript引擎根据语言的规则在背后完成。...
在前端开发领域,JavaScript是不可或缺的核心语言,而深入理解JavaScript的基础语法和机制是每个前端工程师必备的技能。本文将详细探讨“前端...但是,理解“==”的隐式转换机制仍然是提升JavaScript技能的关键一步。
不同类型的变量比较要先转类型,叫做类型转换,类型转换也叫隐式转换。隐式转换通常发生在运算符加减乘除,等于,还有小于,大于等。。 typeof '11' //string typeof(11) //number '11' < 4 //false 本章节单独...
隐式类型转换是JavaScript语言中一个十分重要的概念,它是指在某些运算、条件判断或方法调用过程中,...在实际编程中,为了保持代码的清晰和可预测性,建议尽量使用显式类型转换,减少依赖JavaScript引擎的隐式转换。
在JavaScript中声明变量不需指定类型, 对变量赋值也没有类型检查,同时JavaScript允许隐式类型转换。这些特征说明JavaScript属于弱类型的语言。 (1).转换为字符串 转换为字符串是应用程序中的常见操作,javascript...
对象在JavaScript中也可以被隐式转换为原始值,通常是在与字符串进行连接时。对象转换为字符串是通过调用`toString()`方法实现的,如: ```javascript Math.toString(); // "Math" ``` 当对象与字符串相加时,...
对象在JavaScript中也有隐式转换的情况。当试图将对象与字符串结合时,JavaScript会调用对象的`toString`方法。例如,`"the Math object: " + Math`会调用`Math.toString()`。同样,对象也可以通过`valueOf`方法转换...
在JavaScript中,隐式转换通常发生在以下几种情况: - 连接操作符 (+):如果其中一方是字符串,另一方就会被转换成字符串。 - 自增/自减运算符 (++/--):会尝试将操作数转换为数值。 - 算术运算符 (+, -, *, /, %):...
隐式类型转换是JavaScript语言的一个特性,虽然它提供了灵活性,但在实际开发中也容易引起混淆和bug,特别是当开发者对隐式转换的规则不够熟悉时。因此,了解和掌握JavaScript中的隐式类型转换规则对写出健壮、可靠...
JavaScript中的隐式转换是编程时需要注意的重要概念,它涉及到不同数据类型之间的比较和运算。在JavaScript中,数据类型主要包括Number、Boolean、String、Undefined、Null、Symbol(ES6新增)以及Object(其中Array...
在 JavaScript 中,还可以使用隐式转换将其他类型转换为字符串类型。例如,可以使用加号(+)运算符将其他类型转换为字符串类型。 例如: ```javascript var a = true; var str = a + ""; console.log(str); // ...
在 JavaScript 中,当我们进行比较操作或者加减乘除四则运算操作时,常常会触发 JavaScript 的隐式类型转换机制;而这部分也往往是令人迷惑的地方。譬如浏览器中的 console.log 操作常常会将任何值都转化为字符串...
在JavaScript中,类型转换可以分为两种:隐式转换和显式转换。隐式转换指的是代码在不明确指示转换过程的情况下发生的自动类型转换,而显式转换则是通过特定的JavaScript函数或操作符明确地进行类型转换。 隐式转换...