欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JavaScript强制类型转换和隐式类型转换操作示例

程序员文章站 2023-10-28 21:02:10
本文实例讲述了javascript强制类型转换和隐式类型转换。分享给大家供大家参考,具体如下: 在javascript中声明变量不需指定类型, 对变量赋值也没有类型检查,...

本文实例讲述了javascript强制类型转换和隐式类型转换。分享给大家供大家参考,具体如下:

在javascript中声明变量不需指定类型, 对变量赋值也没有类型检查,同时javascript允许隐式类型转换。这些特征说明javascript属于弱类型的语言。

(1).转换为字符串

转换为字符串是应用程序中的常见操作,javascript提供了tostring方法。多数的javascript宿主环境(比如node.js和chrome)都提供了全局函数tostring; 与此同时object.prototype也定义了tostring方法,使得所有对象都拥有转换为字符串的能力。

例如将一个number转换为string:

var n = 1;
n.tostring(); // '1'

tostring接受一个参数指定进制,默认为10. 可以利用这个参数生成包括字母和数字的随机字符串。“`

math.random().tostring(36).substr(2);

``random生成一个0到1的随机数,36进制的字符集为[0-9a-z](36个),`substr`用来截掉起始的"0."。 另外`object.prototype.tostring`可以用来检测javascript对象的类型:

var tostring = object.prototype.tostring;
tostring.call(new date); // [object date]
tostring.call(new string); // [object string]
tostring.call(math); // [object math]
// since javascript 1.8.5
tostring.call(undefined); // [object undefined]
tostring.call(null); // [object null]
// 自定义类型
tostring.call(new myclass);  // [object object]

转换为数字

在javascript中可以直接用parseint和parsefloat。 例如:

var inum1 = parseint("red");  //返回 nan
var fnum4 = parsefloat("11.22.44"); //返回 11.22

强制类型转换

强制类型转换在c++中有两种方式:用括号将类型声明在变量之前;或者调用构造函数。 在javascript中没有类型关键字(只有一个var来声明变量),因而只能调用构造函数:

boolean(0) // => false - 零
boolean(new object()) // => true - 对象
number(undefined) // => nan
number(null) // => 0
string(null) // => “null”

隐式类型转换

隐式类型转换是最为隐蔽的地方,不加注意的话很容易在这一点上出错,对这一点的掌握也体现了javascript程序员经验。 javascript会自动转换表达式中对象的类型以完成表达式求值。

(1)四则运算

加法运算符+是双目运算符,只要其中一个是string类型,表达式的值便是一个string。

对于其他的四则运算,只有其中一个是number类型,表达式的值便是一个number。

对于非法字符的情况通常会返回nan:

‘1' * ‘a' // => nan,这是因为parseint(a)值为nan,1 * nan 还是 nan

(2)判断语句

判断语句中的判断条件需要是boolean类型,所以条件表达式会被隐式转换为boolean。 其转换规则同boolean的构造函数。

var obj = {};
if(obj){
while(obj);
}

(3)native代码调用**

javascript宿主环境都会提供大量的对象,它们往往不少通过javascript来实现的。 javascript给这些函数传入的参数也会进行隐式转换。例如bom提供的alert方法接受string类型的参数:

alert({a: 1}); // => [object object]

更多关于javascript相关内容感兴趣的读者可查看本站专题:《javascript面向对象入门教程》、《javascript常用函数技巧汇总》、《javascript错误与调试技巧总结》、《javascript数据结构与算法技巧总结》、《javascript遍历算法与技巧总结》及《javascript数学运算用法总结

希望本文所述对大家javascript程序设计有所帮助。