宝哥软件园

Javascript类型转换方法

编辑:宝哥软件园 来源:互联网 时间:2021-10-22

Javascript中的变量也支持自由类型转换为合适(或必需)的内容,以便于使用。弱Javascript不会根据程序员的意愿从实际的变量类型转换为所需的数据类型。例如,一个非常常见的错误是,在浏览器脚本中,一个数字类型的变量和用户要输入的另一个数字变量的总和是从表单控件中获得的。因为变量类型是表单控件中的字符串类型(计时字符串序列包含一个数字),所以这种尝试会将该字符串添加到变量中,即使这些值碰巧是一些数字,结果也会在第二个变量中转换为字符串类型,并且只有从表单控件中获得的变量才会添加到末尾第一个字符串的末尾。转换为布尔类型当表达式为if等判断情况时,类型转换的结果将为布尔型进行判断。这些判断包括逻辑运算,如AND(),OR (| |)和NOT(!)。非操作变换变量是玻尔型,如果变量是玻尔型-真。则返回false,否则返回true。两次非运算将返回一个值,该值相当于将一个变量转换为玻尔类型。var boolValue=!x;这项技术将在以后使用。另一种方法是将目标作为参数传递给布尔构造函数。var boolValue=布尔值(x);(1)当数值类型转换为布尔值时,数值零将变为假,其他数值将变为真。除了特殊数字NaN(非数字)之外,当其他类型转换为数字类型时,当没有返回有意义的数字时,使用NaN。NaN总是返回false。无论是无限的、无穷小的还是有限的,只要不为零,转换为布尔型时总是返回true。(2)字符串类型转换规则简单。除空字符串外,所有转换为布尔类型的字符串都返回true,空字符串返回false。(3)对于其他类型,undefined和null将返回false,而Object和function类型总是返回true。当需要判断一个对象是否为未定义对象时,这是最有价值的功能。调用未定义的变量(未定义或空)将产生错误。当所有这些都不确定时(这通常是web浏览器所关心的),为了避免代码错误,有必要对对象进行if判断。建议将对象作为表达式,转换为布尔类型。如果返回false,则表示对象不存在;如果为真,则表示该对象存在。if(document . document element){ scrollX=document . document element . scrollLeft;}两个非操作可以判断对象是否可以使用。复制的代码如下:var hasDocEl=!document.documentElement.if(HasDocel){ scrollX=document . document element . scrollLeft;}转换为字符串类型

另一种方法是将目标作为参数传递给字符串构造函数。var String value=String(x);注意,上面的值123e-2已经转换成字符串‘1.23’,因为已经用科学的计数方法转换成普通表达式。然而,Javascript的本质数值类型是来自IEEE的双精度浮点类型,这意味着只能存储有限的精度。数学运算的结果可能只产生近似值。当它们被转换成字符串时,可能会收到意想不到的结果。因此,通常需要设置特定的定制功能来获得可接受的结果。这种类型转换机制很难保证正常的结果。当一个对象或函数被转换成字符串时,它们的toString方法将被调用。默认情况下会执行Object.prototype.toString和Function.prototype.toString,只是会覆盖“toString”方法。要将函数转换为字符串,不需要返回结果。Function.prototype.toString方法可以完成大部分需求,它会返回‘宿主对象’和方法(这个对象和方法取决于不同的环境,比如DOM元素)。有许多常见的方法可以转换为数字类型,尤其是从字符串转换为数字类型。除了加法()之外的任何数学运算方法都将执行类型转换。因此,将字符串类型转换为数值类型可以使用数值进行操作,例如减去零或乘以一。var NumValue=StringValue-0;/*或*/var NumValue=StringValue * 1;/*或*/var NumValue=StringValue/1;但是,(正)操作仍然可以将字符串类型转换为数字类型。因为他不做任何计算,这个方法是最快的。顺便说一下,逆运算也执行类型转换,从而目标变成相反的结果。var NumValue=(string VaLue);/*这是不必要的,操作后加了圆括号,只是为了让代码更容易理解和清晰,特别是避免与加法和连续操作混淆。(正)运算是将字符串类型转换为数字类型的最快方法。将参数传递给Number构造函数,该构造函数将执行类型转换并返回一个数字类型。var numValue=Number(string value);Number构造函数是最慢的类型转换方法,但当速度不是关键时,它可以使代码干净。对于其他类型,对象和函数总是转换为NaN。Undefined的意思与null完全不同,但只有null被转换为零。可能是因为先转换成玻尔型,再转换成数值型。在上面转换成玻尔型的结果已经很清楚了。如果将null转换为玻尔类型,它将返回false。它将变成零。几乎所有的都不需要转换成数字类型。它们如何转换的真正意义在于,为了考虑一些偶然的结果,当一个字符串被转换时,结果由它们返回(或者由于一些数学运算而返回)。解析浮动

解析空字符串的ParseFloat将返回NaN,因为空字符串不是数值表达式。指数可以被解析,从0开始的八进制不会阻止字符串被解析成十进制数。十六进制数停止分析,因为“x”不能作为数字分析,并返回零。

非字符串类型转换是一种快速转换,它作为字符串传递给parseFloat。当这些类型被转换为字符串时,就不再是正常的结果了。它的解析结果是NaN、Objects和functions。可能有一个自定义的toString方法,它返回一个将被解析为数值的字符串,这是一个特殊的要求。ParseIntparseInt函数的工作方式类似于parseFloat,只是它试图将字符串转换为整数值,并且只能将少数符号识别为数字。ParseInt函数偶尔用于将单精度浮点值类型转换为整数。此转换不适合,因为它必须首先从字符串类型转换为单精度数值类型。此外,它会产生一些错误,因此它变得非常低效。例如,科学计数法2e-200的数值应该正确返回零,但parseInt返回2。而且因为它是用Javascript格式化的,所以值通常会返回一些近似值。例如,1/2 1/3 1/6=0.9999999999999,这个表达式的结果的近似值应该是1,但是parseInt应该返回0。可以得到近似值的数学圆、数学天花板和数学地板都适合这项工作。为了得到结果,表达式将被视为32位有符号整数。这条规则也适用于以下情况。注意:数学舍入函数执行普通舍入。0.4和1将被忽略,0.5及以上将增加1。每当有小数时,Math.ceil函数就加1。无论十进制大小如何,都将忽略Math.floor函数。从这些函数的定义可以看出,parseInt方法和Math.floor在处理小数时是一样的。ToInt32ToInt32是一个内置函数。虽然它非常有用,但不能像parseInt那样直接调用。有一些不寻常的方法可以将Javascript变量转换为数值。但是它可以在一些有限的情况下使用。位,如按位或(|)和按位与(),在使用时可以转换为数字类型。但是它们只在32位有符号整形中工作,所以我们可以调用内置函数ToInt32来返回转换后的32位有符号整形变量(用于类型转换)。结果就像调用parseInt函数后一样,但结果限制在32位,所以都是数值,没有NaN或Infinity。即使使用空值操作,结果也会返回一个数值。使用位操作不会给结果留下深刻印象,但是您可以调用ToInt32函数。即使未定义,对象和函数也会转换为0,布尔值true会转换为值1。作者:高(布莱恩)来源:

更多资讯
游戏推荐
更多+