js 当变量值为0,判断是否为空时(0=="")返回ture的问题

本文详细探讨了JavaScript中==与===的区别,包括它们的比较规则及如何处理不同类型的变量之间的比较。通过具体示例,解释了为何某些特定情况下0与空字符串会被视为相等。
var aa = 0;
if(aa=="")alert("111");

或者

var aa = 00;
aa==""

都是返回true。


这是因为0与 ’ ’ 转换成布尔型都是false的。

var aa = 0;
if(aa.toString()=="")   //false
   alert("111");

如果不显示将比较的两个表达式转换成类型相同时,那么:
相同的字符串、数值上相等的数字、相同的对象、相同的 Boolean 值或者(当类型不同时)能被强制转化为上述情况之一,均被认为是相等的。

此处,将aa和 ’ ’ 均转换成Boolean类型,所以相等。


或者使用===号来比较

var aa = 0;
if(aa==="")   //false
   alert("111");

附:==和===号的区别
简单来说就是使用“==”时,如果两边类型不同,js引擎会把它们转换成相同类型然后在进行比较,而“===”则不会进行类型转换,因此当两边不是属于同一个类型,肯定不相等。例如:

var a = 0, b = '0';

alert((a == b) + '--' + (a === b))

此时看到的结果为“true–false”。

=== 判断规则

1.如果类型不同,就[不相等]
2.如果两个都是数值,并且是同一个值,那么[相等];(!例外)的是,如果其中至少一个是 NaN,那么[不相等]。(判断一个值是否是NaN,只能用isNaN()来判断)
3.如果两个都是字符串,每个位置的字符都一样,那么[相等];否则[不相等]。
4.如果两个值都是true,或者都是false,那么[相等]。
5.如果两个值都引用同一个对象或函数,那么[相等];否则[不相等]。
6.如果两个值都是null,或者都是undefined,那么[相等]。

== 判断规则:
1.如果两个值类型相同,进行 === 比较。
2.如果两个值类型不同,他们可能相等。根据下面规则进行类型转换再比较:
3.如果一个是null、一个是undefined,那么[相等]。
4.如果一个是字符串,一个是数值,把字符串转换成数值再进行比较。
5.如果任一值是 true,把它转换成 1 再比较;如果任一值是 false,把它转换成 0 再比较。
6.如果一个是对象,另一个是数值或字符串,把对象转换成基础类型的值再比较。对象转换成基础类型,利用它的toString或者valueOf方法。js核心内置类,会尝试valueOf先于toString;例外的是Date,Date利用的是toString转换。非js核心的对象,令说(比较麻烦,我也不大懂)
7.任何其他组合,都[不相等]。

特别需要注意的是true、false的转换,例如:

alert(true == 1);  //ture
alert(true == 2); //false, true会转换成number,也就是1,当然 1 不等于 2
//可以使用 !! 来把一个数据类型转换为boolean型
alert(true == !!2) //true,!2 === false !(!=2) = !false = true

另外在js中,如果把一个变量用在逻辑运算中,那么变量在无初始值或者其值为 0、-0、null、”、false、undefined 或者 NaN时,它的值为 false,这意味test==false,当test为undefined的时候是true的,这正是!==和===的 有用地方。

这两个操作符将检查变量的精确值(比如null) 而不是单纯的计算值(false)。

第2关:JavaScript 数据类型转换 100 学习内容 参考答案 记录 评论 任务描述 相关知识 字符串转整数 字符串转小数 数字转字符串 布尔型与其他类型的相互转换 隐式转换 编程要求 测试说明 任务描述 数据类型转换是开发过程中最常碰到的问题之一。 本关任务:函数 mainJs() 有三个字符串类型的参数 a、b 和 c,你需要分别把他们转换为整数,整数和小数。 第一个参数既有可能是 12 这种纯整数的字符串形式,也有可能是 12a3 这种含有非数字字符的字符串; 第二个参数是 16 进制数字的字符串形式,如 af2; 第三个参数是纯小数的字符串形式,如 12.2; 想要通过本关,请阅读下方的相关知识。 相关知识 在使用 JavaScript 进行的开发过程中,往往会碰到数据类型转换的需求,尤其是数字转字符串字符串转数字。 例如,在 JavaScript 中,从前端页面获得的都是字符串类型,包括数字也会被识别为字符串类型,这自然就产生了转换的需求。 字符串转整数 如果你想把一个字符串转换成整数,有两种方式。 使用 parseInt() 方法,参数为字符串,结果为该字符串转换而来的整数; 转化规则是:如果字符串的首字符不是一个数字,转换失败,返回 NaN;否则,转换到字符串中第一个不是数字的字符止,即,遇到字母、小数点下划线等字符立即停止转换。需要注意的是,16 进制的符号 0x 不会让转换停止。 parseInt() 还可以有第二个参数,表示待转换字符串的进制。下面给一些例子: parseInt("12"); parseInt("12.2"); parseInt("C",16); parseInt("12a2"); parseInt("0XC"); //以上均返回数字12 parseInt("a12"); //失败 使用 Number() 进行强制类型转换; 使用 Number() 转换一个字符串,这个字符串必须是只含有数字的字符串,即数字的字符串形式。与上面的 parseInt() 方法对比可知,Number() 实现的是更加严格的字符串转换为数字操作。因为对于 12a3 这种含有字母等非数字字符的字符串,Number() 会报错。下面是一些例子。 Number("12"); //返回12 Number("12a2"); //返回NaN Number(""); //返回0 字符串转小数 与整数相同,字符串转小数也有两种方式:parseFloat() 和 Number()。 parseFloat() 方法只转换到字符串中第一个不是数字的字符为止,当然这个字符不包括第一个小数点。这里有些不好理解,下面用例子解释。 parseFloat("12"); //返回12 parseFloat("12.2a"); //返回12.2 parseFloat("12.2.2"); //返回12.2,第二个小数点会让转换停止 parseFloat(null); //返回0 数字转字符串 toString() 实现一般的数字转字符串,String() 则是强制类型转换。 toString() 括号内有一个可选的参数,指以几进制的形式转换该字符串,如数字12调用 toString(16) 得到的结果就是 C,即12的16进制表示方式。 String() 可以转换 null 和 undefined,而 toString() 不可以。 var myNum = 15; console.log(myNum.toString()); //输出"15" console.log(myNum.toString(16)); //输出"F" console.log(String(myNum)); //输出"15" 布尔型与其他类型的相互转换 布尔型的只有两个 true 和 false 。转换规则如下: 布尔型转为字符串直接就是字符串 true 或者 false; 布尔型中的 true 转换为数字 1,布尔型中的 false 转换为数字 0; 数字 0、null、undefined、字符串转换为布尔型的 false,其他所有都是转换为 true。 下面例子中的 Boolean() 方法实现其他的类型转布尔型。 var myBool = ture; myBool.toString(); //返回"true" Number(true); //返回1 Boolean("js"); //返回true Boolean(""); //返回false 注意,上面讲的字符串是"",而不是字符串" ",这两个不同,后者双引号之间有一个英文字符的大小的位,他们转为布尔型的结果不同: Boolean(""); //返回false Boolean(" "); //返回true 隐式转换 JavaScript 是一种弱类型语言,不同类型的变量在运算符的作用下会发生类型转换。这个是编译环境下直接进行的,所以叫隐式类型转换。下面是一些转换规则: +运算的两个操作数是数字和字符串,数字会被转换为字符串; +运算的两个操作数是数字和布尔型,布尔型会被转换为数字; +运算的两个操作数是字符串和布尔型,布尔型会被转换为字符串; 减、乘、除、取余运算会把其他类型转换为数字; if 括号中单独的一个变量会被转换为布尔型。 编程要求 本关的编程任务是补全右侧代码片段中 Begin-End 中的代码,具体要求如下: 完成函数 mainJs(); 把函数三个参数(从左到右)依次转换为整数,整数和小数; 第一个参数既有可能是 12 这种纯整数的字符串形式,也有可能是 12a3 这种含有非数字字符的字符串; 第二个参数是 16 进制数字的字符串形式,如 af2; 第三个参数是纯小数的字符串形式,如 12.2; 具体请参见后续测试样例。 本关涉及的代码文件 DataKindConvert.js 的代码框架如下: //你需要把字符串args1,args2,args3转换为数字a,b和c. function mainJs(args1,args2,args3) { // 请在此处编写代码 /********** Begin **********/ /********** End **********/ return a+b+c; } 测试说明 测试过程: 平台将读取用户补全后的 DataKindConvert.js; 调用其中的 mainJs() 方法,并输入组测试数据; 接着测试的输出判断程序是否正确。 以下是测试样例: 测试输入: 5a2,1f,6.1 预期输出: 42.1 测试输入: 12.9,1a,3.1 预期输出: 41.1第2关:JavaScript 数据类型转换 100 学习内容 参考答案 记录 评论 任务描述 相关知识 字符串转整数 字符串转小数 数字转字符串 布尔型与其他类型的相互转换 隐式转换 编程要求 测试说明 任务描述 数据类型转换是开发过程中最常碰到的问题之一。 本关任务:函数 mainJs() 有三个字符串类型的参数 a、b 和 c,你需要分别把他们转换为整数,整数和小数。 第一个参数既有可能是 12 这种纯整数的字符串形式,也有可能是 12a3 这种含有非数字字符的字符串; 第二个参数是 16 进制数字的字符串形式,如 af2; 第三个参数是纯小数的字符串形式,如 12.2; 想要通过本关,请阅读下方的相关知识。 相关知识 在使用 JavaScript 进行的开发过程中,往往会碰到数据类型转换的需求,尤其是数字转字符串字符串转数字。 例如,在 JavaScript 中,从前端页面获得的都是字符串类型,包括数字也会被识别为字符串类型,这自然就产生了转换的需求。 字符串转整数 如果你想把一个字符串转换成整数,有两种方式。 使用 parseInt() 方法,参数为字符串,结果为该字符串转换而来的整数; 转化规则是:如果字符串的首字符不是一个数字,转换失败,返回 NaN;否则,转换到字符串中第一个不是数字的字符止,即,遇到字母、小数点下划线等字符立即停止转换。需要注意的是,16 进制的符号 0x 不会让转换停止。 parseInt() 还可以有第二个参数,表示待转换字符串的进制。下面给一些例子: parseInt("12"); parseInt("12.2"); parseInt("C",16); parseInt("12a2"); parseInt("0XC"); //以上均返回数字12 parseInt("a12"); //失败 使用 Number() 进行强制类型转换; 使用 Number() 转换一个字符串,这个字符串必须是只含有数字的字符串,即数字的字符串形式。与上面的 parseInt() 方法对比可知,Number() 实现的是更加严格的字符串转换为数字操作。因为对于 12a3 这种含有字母等非数字字符的字符串,Number() 会报错。下面是一些例子。 Number("12"); //返回12 Number("12a2"); //返回NaN Number(""); //返回0 字符串转小数 与整数相同,字符串转小数也有两种方式:parseFloat() 和 Number()。 parseFloat() 方法只转换到字符串中第一个不是数字的字符为止,当然这个字符不包括第一个小数点。这里有些不好理解,下面用例子解释。 parseFloat("12"); //返回12 parseFloat("12.2a"); //返回12.2 parseFloat("12.2.2"); //返回12.2,第二个小数点会让转换停止 parseFloat(null); //返回0 数字转字符串 toString() 实现一般的数字转字符串,String() 则是强制类型转换。 toString() 括号内有一个可选的参数,指以几进制的形式转换该字符串,如数字12调用 toString(16) 得到的结果就是 C,即12的16进制表示方式。 String() 可以转换 null 和 undefined,而 toString() 不可以。 var myNum = 15; console.log(myNum.toString()); //输出"15" console.log(myNum.toString(16)); //输出"F" console.log(String(myNum)); //输出"15" 布尔型与其他类型的相互转换 布尔型的只有两个 true 和 false 。转换规则如下: 布尔型转为字符串直接就是字符串 true 或者 false; 布尔型中的 true 转换为数字 1,布尔型中的 false 转换为数字 0; 数字 0、null、undefined、字符串转换为布尔型的 false,其他所有都是转换为 true。 下面例子中的 Boolean() 方法实现其他的类型转布尔型。 var myBool = ture; myBool.toString(); //返回"true" Number(true); //返回1 Boolean("js"); //返回true Boolean(""); //返回false 注意,上面讲的字符串是"",而不是字符串" ",这两个不同,后者双引号之间有一个英文字符的大小的位,他们转为布尔型的结果不同: Boolean(""); //返回false Boolean(" "); //返回true 隐式转换 JavaScript 是一种弱类型语言,不同类型的变量在运算符的作用下会发生类型转换。这个是编译环境下直接进行的,所以叫隐式类型转换。下面是一些转换规则: +运算的两个操作数是数字和字符串,数字会被转换为字符串; +运算的两个操作数是数字和布尔型,布尔型会被转换为数字; +运算的两个操作数是字符串和布尔型,布尔型会被转换为字符串; 减、乘、除、取余运算会把其他类型转换为数字; if 括号中单独的一个变量会被转换为布尔型。 编程要求 本关的编程任务是补全右侧代码片段中 Begin-End 中的代码,具体要求如下: 完成函数 mainJs(); 把函数三个参数(从左到右)依次转换为整数,整数和小数; 第一个参数既有可能是 12 这种纯整数的字符串形式,也有可能是 12a3 这种含有非数字字符的字符串; 第二个参数是 16 进制数字的字符串形式,如 af2; 第三个参数是纯小数的字符串形式,如 12.2; 具体请参见后续测试样例。 本关涉及的代码文件 DataKindConvert.js 的代码框架如下: //你需要把字符串args1,args2,args3转换为数字a,b和c. function mainJs(args1,args2,args3) { // 请在此处编写代码 /********** Begin **********/ /********** End **********/ return a+b+c; } 测试说明 测试过程: 平台将读取用户补全后的 DataKindConvert.js; 调用其中的 mainJs() 方法,并输入组测试数据; 接着测试的输出判断程序是否正确。 以下是测试样例: 测试输入: 5a2,1f,6.1 预期输出: 42.1 测试输入: 12.9,1a,3.1 预期输出: 41.1第2关:JavaScript 数据类型转换 100 学习内容 参考答案 记录 评论 任务描述 相关知识 字符串转整数 字符串转小数 数字转字符串 布尔型与其他类型的相互转换 隐式转换 编程要求 测试说明 任务描述 数据类型转换是开发过程中最常碰到的问题之一。 本关任务:函数 mainJs() 有三个字符串类型的参数 a、b 和 c,你需要分别把他们转换为整数,整数和小数。 第一个参数既有可能是 12 这种纯整数的字符串形式,也有可能是 12a3 这种含有非数字字符的字符串; 第二个参数是 16 进制数字的字符串形式,如 af2; 第三个参数是纯小数的字符串形式,如 12.2; 想要通过本关,请阅读下方的相关知识。 相关知识 在使用 JavaScript 进行的开发过程中,往往会碰到数据类型转换的需求,尤其是数字转字符串字符串转数字。 例如,在 JavaScript 中,从前端页面获得的都是字符串类型,包括数字也会被识别为字符串类型,这自然就产生了转换的需求。 字符串转整数 如果你想把一个字符串转换成整数,有两种方式。 使用 parseInt() 方法,参数为字符串,结果为该字符串转换而来的整数; 转化规则是:如果字符串的首字符不是一个数字,转换失败,返回 NaN;否则,转换到字符串中第一个不是数字的字符止,即,遇到字母、小数点下划线等字符立即停止转换。需要注意的是,16 进制的符号 0x 不会让转换停止。 parseInt() 还可以有第二个参数,表示待转换字符串的进制。下面给一些例子: parseInt("12"); parseInt("12.2"); parseInt("C",16); parseInt("12a2"); parseInt("0XC"); //以上均返回数字12 parseInt("a12"); //失败 使用 Number() 进行强制类型转换; 使用 Number() 转换一个字符串,这个字符串必须是只含有数字的字符串,即数字的字符串形式。与上面的 parseInt() 方法对比可知,Number() 实现的是更加严格的字符串转换为数字操作。因为对于 12a3 这种含有字母等非数字字符的字符串,Number() 会报错。下面是一些例子。 Number("12"); //返回12 Number("12a2"); //返回NaN Number(""); //返回0 字符串转小数 与整数相同,字符串转小数也有两种方式:parseFloat() 和 Number()。 parseFloat() 方法只转换到字符串中第一个不是数字的字符为止,当然这个字符不包括第一个小数点。这里有些不好理解,下面用例子解释。 parseFloat("12"); //返回12 parseFloat("12.2a"); //返回12.2 parseFloat("12.2.2"); //返回12.2,第二个小数点会让转换停止 parseFloat(null); //返回0 数字转字符串 toString() 实现一般的数字转字符串,String() 则是强制类型转换。 toString() 括号内有一个可选的参数,指以几进制的形式转换该字符串,如数字12调用 toString(16) 得到的结果就是 C,即12的16进制表示方式。 String() 可以转换 null 和 undefined,而 toString() 不可以。 var myNum = 15; console.log(myNum.toString()); //输出"15" console.log(myNum.toString(16)); //输出"F" console.log(String(myNum)); //输出"15" 布尔型与其他类型的相互转换 布尔型的只有两个 true 和 false 。转换规则如下: 布尔型转为字符串直接就是字符串 true 或者 false; 布尔型中的 true 转换为数字 1,布尔型中的 false 转换为数字 0; 数字 0、null、undefined、字符串转换为布尔型的 false,其他所有都是转换为 true。 下面例子中的 Boolean() 方法实现其他的类型转布尔型。 var myBool = ture; myBool.toString(); //返回"true" Number(true); //返回1 Boolean("js"); //返回true Boolean(""); //返回false 注意,上面讲的字符串是"",而不是字符串" ",这两个不同,后者双引号之间有一个英文字符的大小的位,他们转为布尔型的结果不同: Boolean(""); //返回false Boolean(" "); //返回true 隐式转换 JavaScript 是一种弱类型语言,不同类型的变量在运算符的作用下会发生类型转换。这个是编译环境下直接进行的,所以叫隐式类型转换。下面是一些转换规则: +运算的两个操作数是数字和字符串,数字会被转换为字符串; +运算的两个操作数是数字和布尔型,布尔型会被转换为数字; +运算的两个操作数是字符串和布尔型,布尔型会被转换为字符串; 减、乘、除、取余运算会把其他类型转换为数字; if 括号中单独的一个变量会被转换为布尔型。 编程要求 本关的编程任务是补全右侧代码片段中 Begin-End 中的代码,具体要求如下: 完成函数 mainJs(); 把函数三个参数(从左到右)依次转换为整数,整数和小数; 第一个参数既有可能是 12 这种纯整数的字符串形式,也有可能是 12a3 这种含有非数字字符的字符串; 第二个参数是 16 进制数字的字符串形式,如 af2; 第三个参数是纯小数的字符串形式,如 12.2; 具体请参见后续测试样例。 本关涉及的代码文件 DataKindConvert.js 的代码框架如下: //你需要把字符串args1,args2,args3转换为数字a,b和c. function mainJs(args1,args2,args3) { // 请在此处编写代码 /********** Begin **********/ /********** End **********/ return a+b+c; } 测试说明 测试过程: 平台将读取用户补全后的 DataKindConvert.js; 调用其中的 mainJs() 方法,并输入组测试数据; 接着测试的输出判断程序是否正确。 以下是测试样例: 测试输入: 5a2,1f,6.1 预期输出: 42.1 测试输入: 12.9,1a,3.1 预期输出: 41.1第2关:JavaScript 数据类型转换 100 学习内容 参考答案 记录 评论 任务描述 相关知识 字符串转整数 字符串转小数 数字转字符串 布尔型与其他类型的相互转换 隐式转换 编程要求 测试说明 任务描述 数据类型转换是开发过程中最常碰到的问题之一。 本关任务:函数 mainJs() 有三个字符串类型的参数 a、b 和 c,你需要分别把他们转换为整数,整数和小数。 第一个参数既有可能是 12 这种纯整数的字符串形式,也有可能是 12a3 这种含有非数字字符的字符串; 第二个参数是 16 进制数字的字符串形式,如 af2; 第三个参数是纯小数的字符串形式,如 12.2; 想要通过本关,请阅读下方的相关知识。 相关知识 在使用 JavaScript 进行的开发过程中,往往会碰到数据类型转换的需求,尤其是数字转字符串字符串转数字。 例如,在 JavaScript 中,从前端页面获得的都是字符串类型,包括数字也会被识别为字符串类型,这自然就产生了转换的需求。 字符串转整数 如果你想把一个字符串转换成整数,有两种方式。 使用 parseInt() 方法,参数为字符串,结果为该字符串转换而来的整数; 转化规则是:如果字符串的首字符不是一个数字,转换失败,返回 NaN;否则,转换到字符串中第一个不是数字的字符止,即,遇到字母、小数点下划线等字符立即停止转换。需要注意的是,16 进制的符号 0x 不会让转换停止。 parseInt() 还可以有第二个参数,表示待转换字符串的进制。下面给一些例子: parseInt("12"); parseInt("12.2"); parseInt("C",16); parseInt("12a2"); parseInt("0XC"); //以上均返回数字12 parseInt("a12"); //失败 使用 Number() 进行强制类型转换; 使用 Number() 转换一个字符串,这个字符串必须是只含有数字的字符串,即数字的字符串形式。与上面的 parseInt() 方法对比可知,Number() 实现的是更加严格的字符串转换为数字操作。因为对于 12a3 这种含有字母等非数字字符的字符串,Number() 会报错。下面是一些例子。 Number("12"); //返回12 Number("12a2"); //返回NaN Number(""); //返回0 字符串转小数 与整数相同,字符串转小数也有两种方式:parseFloat() 和 Number()。 parseFloat() 方法只转换到字符串中第一个不是数字的字符为止,当然这个字符不包括第一个小数点。这里有些不好理解,下面用例子解释。 parseFloat("12"); //返回12 parseFloat("12.2a"); //返回12.2 parseFloat("12.2.2"); //返回12.2,第二个小数点会让转换停止 parseFloat(null); //返回0 数字转字符串 toString() 实现一般的数字转字符串,String() 则是强制类型转换。 toString() 括号内有一个可选的参数,指以几进制的形式转换该字符串,如数字12调用 toString(16) 得到的结果就是 C,即12的16进制表示方式。 String() 可以转换 null 和 undefined,而 toString() 不可以。 var myNum = 15; console.log(myNum.toString()); //输出"15" console.log(myNum.toString(16)); //输出"F" console.log(String(myNum)); //输出"15" 布尔型与其他类型的相互转换 布尔型的只有两个 true 和 false 。转换规则如下: 布尔型转为字符串直接就是字符串 true 或者 false; 布尔型中的 true 转换为数字 1,布尔型中的 false 转换为数字 0; 数字 0、null、undefined、字符串转换为布尔型的 false,其他所有都是转换为 true。 下面例子中的 Boolean() 方法实现其他的类型转布尔型。 var myBool = ture; myBool.toString(); //返回"true" Number(true); //返回1 Boolean("js"); //返回true Boolean(""); //返回false 注意,上面讲的字符串是"",而不是字符串" ",这两个不同,后者双引号之间有一个英文字符的大小的位,他们转为布尔型的结果不同: Boolean(""); //返回false Boolean(" "); //返回true 隐式转换 JavaScript 是一种弱类型语言,不同类型的变量在运算符的作用下会发生类型转换。这个是编译环境下直接进行的,所以叫隐式类型转换。下面是一些转换规则: +运算的两个操作数是数字和字符串,数字会被转换为字符串; +运算的两个操作数是数字和布尔型,布尔型会被转换为数字; +运算的两个操作数是字符串和布尔型,布尔型会被转换为字符串; 减、乘、除、取余运算会把其他类型转换为数字; if 括号中单独的一个变量会被转换为布尔型。 编程要求 本关的编程任务是补全右侧代码片段中 Begin-End 中的代码,具体要求如下: 完成函数 mainJs(); 把函数三个参数(从左到右)依次转换为整数,整数和小数; 第一个参数既有可能是 12 这种纯整数的字符串形式,也有可能是 12a3 这种含有非数字字符的字符串; 第二个参数是 16 进制数字的字符串形式,如 af2; 第三个参数是纯小数的字符串形式,如 12.2; 具体请参见后续测试样例。 本关涉及的代码文件 DataKindConvert.js 的代码框架如下: //你需要把字符串args1,args2,args3转换为数字a,b和c. function mainJs(args1,args2,args3) { // 请在此处编写代码 /********** Begin **********/ /********** End **********/ return a+b+c; } 测试说明 测试过程: 平台将读取用户补全后的 DataKindConvert.js; 调用其中的 mainJs() 方法,并输入组测试数据; 接着测试的输出判断程序是否正确。 以下是测试样例: 测试输入: 5a2,1f,6.1 预期输出: 42.1 测试输入: 12.9,1a,3.1 预期输出: 41.1第2关:JavaScript 数据类型转换 100 学习内容 参考答案 记录 评论 任务描述 相关知识 字符串转整数 字符串转小数 数字转字符串 布尔型与其他类型的相互转换 隐式转换 编程要求 测试说明 任务描述 数据类型转换是开发过程中最常碰到的问题之一。 本关任务:函数 mainJs() 有三个字符串类型的参数 a、b 和 c,你需要分别把他们转换为整数,整数和小数。 第一个参数既有可能是 12 这种纯整数的字符串形式,也有可能是 12a3 这种含有非数字字符的字符串; 第二个参数是 16 进制数字的字符串形式,如 af2; 第三个参数是纯小数的字符串形式,如 12.2; 想要通过本关,请阅读下方的相关知识。 相关知识 在使用 JavaScript 进行的开发过程中,往往会碰到数据类型转换的需求,尤其是数字转字符串字符串转数字。 例如,在 JavaScript 中,从前端页面获得的都是字符串类型,包括数字也会被识别为字符串类型,这自然就产生了转换的需求。 字符串转整数 如果你想把一个字符串转换成整数,有两种方式。 使用 parseInt() 方法,参数为字符串,结果为该字符串转换而来的整数; 转化规则是:如果字符串的首字符不是一个数字,转换失败,返回 NaN;否则,转换到字符串中第一个不是数字的字符止,即,遇到字母、小数点下划线等字符立即停止转换。需要注意的是,16 进制的符号 0x 不会让转换停止。 parseInt() 还可以有第二个参数,表示待转换字符串的进制。下面给一些例子: parseInt("12"); parseInt("12.2"); parseInt("C",16); parseInt("12a2"); parseInt("0XC"); //以上均返回数字12 parseInt("a12"); //失败 使用 Number() 进行强制类型转换; 使用 Number() 转换一个字符串,这个字符串必须是只含有数字的字符串,即数字的字符串形式。与上面的 parseInt() 方法对比可知,Number() 实现的是更加严格的字符串转换为数字操作。因为对于 12a3 这种含有字母等非数字字符的字符串,Number() 会报错。下面是一些例子。 Number("12"); //返回12 Number("12a2"); //返回NaN Number(""); //返回0 字符串转小数 与整数相同,字符串转小数也有两种方式:parseFloat() 和 Number()。 parseFloat() 方法只转换到字符串中第一个不是数字的字符为止,当然这个字符不包括第一个小数点。这里有些不好理解,下面用例子解释。 parseFloat("12"); //返回12 parseFloat("12.2a"); //返回12.2 parseFloat("12.2.2"); //返回12.2,第二个小数点会让转换停止 parseFloat(null); //返回0 数字转字符串 toString() 实现一般的数字转字符串,String() 则是强制类型转换。 toString() 括号内有一个可选的参数,指以几进制的形式转换该字符串,如数字12调用 toString(16) 得到的结果就是 C,即12的16进制表示方式。 String() 可以转换 null 和 undefined,而 toString() 不可以。 var myNum = 15; console.log(myNum.toString()); //输出"15" console.log(myNum.toString(16)); //输出"F" console.log(String(myNum)); //输出"15" 布尔型与其他类型的相互转换 布尔型的只有两个 true 和 false 。转换规则如下: 布尔型转为字符串直接就是字符串 true 或者 false; 布尔型中的 true 转换为数字 1,布尔型中的 false 转换为数字 0; 数字 0、null、undefined、字符串转换为布尔型的 false,其他所有都是转换为 true。 下面例子中的 Boolean() 方法实现其他的类型转布尔型。 var myBool = ture; myBool.toString(); //返回"true" Number(true); //返回1 Boolean("js"); //返回true Boolean(""); //返回false 注意,上面讲的字符串是"",而不是字符串" ",这两个不同,后者双引号之间有一个英文字符的大小的位,他们转为布尔型的结果不同: Boolean(""); //返回false Boolean(" "); //返回true 隐式转换 JavaScript 是一种弱类型语言,不同类型的变量在运算符的作用下会发生类型转换。这个是编译环境下直接进行的,所以叫隐式类型转换。下面是一些转换规则: +运算的两个操作数是数字和字符串,数字会被转换为字符串; +运算的两个操作数是数字和布尔型,布尔型会被转换为数字; +运算的两个操作数是字符串和布尔型,布尔型会被转换为字符串; 减、乘、除、取余运算会把其他类型转换为数字; if 括号中单独的一个变量会被转换为布尔型。 编程要求 本关的编程任务是补全右侧代码片段中 Begin-End 中的代码,具体要求如下: 完成函数 mainJs(); 把函数三个参数(从左到右)依次转换为整数,整数和小数; 第一个参数既有可能是 12 这种纯整数的字符串形式,也有可能是 12a3 这种含有非数字字符的字符串; 第二个参数是 16 进制数字的字符串形式,如 af2; 第三个参数是纯小数的字符串形式,如 12.2; 具体请参见后续测试样例。 本关涉及的代码文件 DataKindConvert.js 的代码框架如下: //你需要把字符串args1,args2,args3转换为数字a,b和c. function mainJs(args1,args2,args3) { // 请在此处编写代码 /********** Begin **********/ /********** End **********/ return a+b+c; } 测试说明 测试过程: 平台将读取用户补全后的 DataKindConvert.js; 调用其中的 mainJs() 方法,并输入组测试数据; 接着测试的输出判断程序是否正确。 以下是测试样例: 测试输入: 5a2,1f,6.1 预期输出: 42.1 测试输入: 12.9,1a,3.1 预期输出: 41.1第2关:JavaScript 数据类型转换 100 学习内容 参考答案 记录 评论 任务描述 相关知识 字符串转整数 字符串转小数 数字转字符串 布尔型与其他类型的相互转换 隐式转换 编程要求 测试说明 任务描述 数据类型转换是开发过程中最常碰到的问题之一。 本关任务:函数 mainJs() 有三个字符串类型的参数 a、b 和 c,你需要分别把他们转换为整数,整数和小数。 第一个参数既有可能是 12 这种纯整数的字符串形式,也有可能是 12a3 这种含有非数字字符的字符串; 第二个参数是 16 进制数字的字符串形式,如 af2; 第三个参数是纯小数的字符串形式,如 12.2; 想要通过本关,请阅读下方的相关知识。 相关知识 在使用 JavaScript 进行的开发过程中,往往会碰到数据类型转换的需求,尤其是数字转字符串字符串转数字。 例如,在 JavaScript 中,从前端页面获得的都是字符串类型,包括数字也会被识别为字符串类型,这自然就产生了转换的需求。 字符串转整数 如果你想把一个字符串转换成整数,有两种方式。 使用 parseInt() 方法,参数为字符串,结果为该字符串转换而来的整数; 转化规则是:如果字符串的首字符不是一个数字,转换失败,返回 NaN;否则,转换到字符串中第一个不是数字的字符止,即,遇到字母、小数点下划线等字符立即停止转换。需要注意的是,16 进制的符号 0x 不会让转换停止。 parseInt() 还可以有第二个参数,表示待转换字符串的进制。下面给一些例子: parseInt("12"); parseInt("12.2"); parseInt("C",16); parseInt("12a2"); parseInt("0XC"); //以上均返回数字12 parseInt("a12"); //失败 使用 Number() 进行强制类型转换; 使用 Number() 转换一个字符串,这个字符串必须是只含有数字的字符串,即数字的字符串形式。与上面的 parseInt() 方法对比可知,Number() 实现的是更加严格的字符串转换为数字操作。因为对于 12a3 这种含有字母等非数字字符的字符串,Number() 会报错。下面是一些例子。 Number("12"); //返回12 Number("12a2"); //返回NaN Number(""); //返回0 字符串转小数 与整数相同,字符串转小数也有两种方式:parseFloat() 和 Number()。 parseFloat() 方法只转换到字符串中第一个不是数字的字符为止,当然这个字符不包括第一个小数点。这里有些不好理解,下面用例子解释。 parseFloat("12"); //返回12 parseFloat("12.2a"); //返回12.2 parseFloat("12.2.2"); //返回12.2,第二个小数点会让转换停止 parseFloat(null); //返回0 数字转字符串 toString() 实现一般的数字转字符串,String() 则是强制类型转换。 toString() 括号内有一个可选的参数,指以几进制的形式转换该字符串,如数字12调用 toString(16) 得到的结果就是 C,即12的16进制表示方式。 String() 可以转换 null 和 undefined,而 toString() 不可以。 var myNum = 15; console.log(myNum.toString()); //输出"15" console.log(myNum.toString(16)); //输出"F" console.log(String(myNum)); //输出"15" 布尔型与其他类型的相互转换 布尔型的只有两个 true 和 false 。转换规则如下: 布尔型转为字符串直接就是字符串 true 或者 false; 布尔型中的 true 转换为数字 1,布尔型中的 false 转换为数字 0; 数字 0、null、undefined、字符串转换为布尔型的 false,其他所有都是转换为 true。 下面例子中的 Boolean() 方法实现其他的类型转布尔型。 var myBool = ture; myBool.toString(); //返回"true" Number(true); //返回1 Boolean("js"); //返回true Boolean(""); //返回false 注意,上面讲的字符串是"",而不是字符串" ",这两个不同,后者双引号之间有一个英文字符的大小的位,他们转为布尔型的结果不同: Boolean(""); //返回false Boolean(" "); //返回true 隐式转换 JavaScript 是一种弱类型语言,不同类型的变量在运算符的作用下会发生类型转换。这个是编译环境下直接进行的,所以叫隐式类型转换。下面是一些转换规则: +运算的两个操作数是数字和字符串,数字会被转换为字符串; +运算的两个操作数是数字和布尔型,布尔型会被转换为数字; +运算的两个操作数是字符串和布尔型,布尔型会被转换为字符串; 减、乘、除、取余运算会把其他类型转换为数字; if 括号中单独的一个变量会被转换为布尔型。 编程要求 本关的编程任务是补全右侧代码片段中 Begin-End 中的代码,具体要求如下: 完成函数 mainJs(); 把函数三个参数(从左到右)依次转换为整数,整数和小数; 第一个参数既有可能是 12 这种纯整数的字符串形式,也有可能是 12a3 这种含有非数字字符的字符串; 第二个参数是 16 进制数字的字符串形式,如 af2; 第三个参数是纯小数的字符串形式,如 12.2; 具体请参见后续测试样例。 本关涉及的代码文件 DataKindConvert.js 的代码框架如下: //你需要把字符串args1,args2,args3转换为数字a,b和c. function mainJs(args1,args2,args3) { // 请在此处编写代码 /********** Begin **********/ /********** End **********/ return a+b+c; } 测试说明 测试过程: 平台将读取用户补全后的 DataKindConvert.js; 调用其中的 mainJs() 方法,并输入组测试数据; 接着测试的输出判断程序是否正确。 以下是测试样例: 测试输入: 5a2,1f,6.1 预期输出: 42.1 测试输入: 12.9,1a,3.1 预期输出: 41.1第2关:JavaScript 数据类型转换 100 学习内容 参考答案 记录 评论 任务描述 相关知识 字符串转整数 字符串转小数 数字转字符串 布尔型与其他类型的相互转换 隐式转换 编程要求 测试说明 任务描述 数据类型转换是开发过程中最常碰到的问题之一。 本关任务:函数 mainJs() 有三个字符串类型的参数 a、b 和 c,你需要分别把他们转换为整数,整数和小数。 第一个参数既有可能是 12 这种纯整数的字符串形式,也有可能是 12a3 这种含有非数字字符的字符串; 第二个参数是 16 进制数字的字符串形式,如 af2; 第三个参数是纯小数的字符串形式,如 12.2; 想要通过本关,请阅读下方的相关知识。 相关知识 在使用 JavaScript 进行的开发过程中,往往会碰到数据类型转换的需求,尤其是数字转字符串字符串转数字。 例如,在 JavaScript 中,从前端页面获得的都是字符串类型,包括数字也会被识别为字符串类型,这自然就产生了转换的需求。 字符串转整数 如果你想把一个字符串转换成整数,有两种方式。 使用 parseInt() 方法,参数为字符串,结果为该字符串转换而来的整数; 转化规则是:如果字符串的首字符不是一个数字,转换失败,返回 NaN;否则,转换到字符串中第一个不是数字的字符止,即,遇到字母、小数点下划线等字符立即停止转换。需要注意的是,16 进制的符号 0x 不会让转换停止。 parseInt() 还可以有第二个参数,表示待转换字符串的进制。下面给一些例子: parseInt("12"); parseInt("12.2"); parseInt("C",16); parseInt("12a2"); parseInt("0XC"); //以上均返回数字12 parseInt("a12"); //失败 使用 Number() 进行强制类型转换; 使用 Number() 转换一个字符串,这个字符串必须是只含有数字的字符串,即数字的字符串形式。与上面的 parseInt() 方法对比可知,Number() 实现的是更加严格的字符串转换为数字操作。因为对于 12a3 这种含有字母等非数字字符的字符串,Number() 会报错。下面是一些例子。 Number("12"); //返回12 Number("12a2"); //返回NaN Number(""); //返回0 字符串转小数 与整数相同,字符串转小数也有两种方式:parseFloat() 和 Number()。 parseFloat() 方法只转换到字符串中第一个不是数字的字符为止,当然这个字符不包括第一个小数点。这里有些不好理解,下面用例子解释。 parseFloat("12"); //返回12 parseFloat("12.2a"); //返回12.2 parseFloat("12.2.2"); //返回12.2,第二个小数点会让转换停止 parseFloat(null); //返回0 数字转字符串 toString() 实现一般的数字转字符串,String() 则是强制类型转换。 toString() 括号内有一个可选的参数,指以几进制的形式转换该字符串,如数字12调用 toString(16) 得到的结果就是 C,即12的16进制表示方式。 String() 可以转换 null 和 undefined,而 toString() 不可以。 var myNum = 15; console.log(myNum.toString()); //输出"15" console.log(myNum.toString(16)); //输出"F" console.log(String(myNum)); //输出"15" 布尔型与其他类型的相互转换 布尔型的只有两个 true 和 false 。转换规则如下: 布尔型转为字符串直接就是字符串 true 或者 false; 布尔型中的 true 转换为数字 1,布尔型中的 false 转换为数字 0; 数字 0、null、undefined、字符串转换为布尔型的 false,其他所有都是转换为 true。 下面例子中的 Boolean() 方法实现其他的类型转布尔型。 var myBool = ture; myBool.toString(); //返回"true" Number(true); //返回1 Boolean("js"); //返回true Boolean(""); //返回false 注意,上面讲的字符串是"",而不是字符串" ",这两个不同,后者双引号之间有一个英文字符的大小的位,他们转为布尔型的结果不同: Boolean(""); //返回false Boolean(" "); //返回true 隐式转换 JavaScript 是一种弱类型语言,不同类型的变量在运算符的作用下会发生类型转换。这个是编译环境下直接进行的,所以叫隐式类型转换。下面是一些转换规则: +运算的两个操作数是数字和字符串,数字会被转换为字符串; +运算的两个操作数是数字和布尔型,布尔型会被转换为数字; +运算的两个操作数是字符串和布尔型,布尔型会被转换为字符串; 减、乘、除、取余运算会把其他类型转换为数字; if 括号中单独的一个变量会被转换为布尔型。 编程要求 本关的编程任务是补全右侧代码片段中 Begin-End 中的代码,具体要求如下: 完成函数 mainJs(); 把函数三个参数(从左到右)依次转换为整数,整数和小数; 第一个参数既有可能是 12 这种纯整数的字符串形式,也有可能是 12a3 这种含有非数字字符的字符串; 第二个参数是 16 进制数字的字符串形式,如 af2; 第三个参数是纯小数的字符串形式,如 12.2; 具体请参见后续测试样例。 本关涉及的代码文件 DataKindConvert.js 的代码框架如下: //你需要把字符串args1,args2,args3转换为数字a,b和c. function mainJs(args1,args2,args3) { // 请在此处编写代码 /********** Begin **********/ /********** End **********/ return a+b+c; } 测试说明 测试过程: 平台将读取用户补全后的 DataKindConvert.js; 调用其中的 mainJs() 方法,并输入组测试数据; 接着测试的输出判断程序是否正确。 以下是测试样例: 测试输入: 5a2,1f,6.1 预期输出: 42.1 测试输入: 12.9,1a,3.1 预期输出: 41.1第2关:JavaScript 数据类型转换 100 学习内容 参考答案 记录 评论 任务描述 相关知识 字符串转整数 字符串转小数 数字转字符串 布尔型与其他类型的相互转换 隐式转换 编程要求 测试说明 任务描述 数据类型转换是开发过程中最常碰到的问题之一。 本关任务:函数 mainJs() 有三个字符串类型的参数 a、b 和 c,你需要分别把他们转换为整数,整数和小数。 第一个参数既有可能是 12 这种纯整数的字符串形式,也有可能是 12a3 这种含有非数字字符的字符串; 第二个参数是 16 进制数字的字符串形式,如 af2; 第三个参数是纯小数的字符串形式,如 12.2; 想要通过本关,请阅读下方的相关知识。 相关知识 在使用 JavaScript 进行的开发过程中,往往会碰到数据类型转换的需求,尤其是数字转字符串字符串转数字。 例如,在 JavaScript 中,从前端页面获得的都是字符串类型,包括数字也会被识别为字符串类型,这自然就产生了转换的需求。 字符串转整数 如果你想把一个字符串转换成整数,有两种方式。 使用 parseInt() 方法,参数为字符串,结果为该字符串转换而来的整数; 转化规则是:如果字符串的首字符不是一个数字,转换失败,返回 NaN;否则,转换到字符串中第一个不是数字的字符止,即,遇到字母、小数点下划线等字符立即停止转换。需要注意的是,16 进制的符号 0x 不会让转换停止。 parseInt() 还可以有第二个参数,表示待转换字符串的进制。下面给一些例子: parseInt("12"); parseInt("12.2"); parseInt("C",16); parseInt("12a2"); parseInt("0XC"); //以上均返回数字12 parseInt("a12"); //失败 使用 Number() 进行强制类型转换; 使用 Number() 转换一个字符串,这个字符串必须是只含有数字的字符串,即数字的字符串形式。与上面的 parseInt() 方法对比可知,Number() 实现的是更加严格的字符串转换为数字操作。因为对于 12a3 这种含有字母等非数字字符的字符串,Number() 会报错。下面是一些例子。 Number("12"); //返回12 Number("12a2"); //返回NaN Number(""); //返回0 字符串转小数 与整数相同,字符串转小数也有两种方式:parseFloat() 和 Number()。 parseFloat() 方法只转换到字符串中第一个不是数字的字符为止,当然这个字符不包括第一个小数点。这里有些不好理解,下面用例子解释。 parseFloat("12"); //返回12 parseFloat("12.2a"); //返回12.2 parseFloat("12.2.2"); //返回12.2,第二个小数点会让转换停止 parseFloat(null); //返回0 数字转字符串 toString() 实现一般的数字转字符串,String() 则是强制类型转换。 toString() 括号内有一个可选的参数,指以几进制的形式转换该字符串,如数字12调用 toString(16) 得到的结果就是 C,即12的16进制表示方式。 String() 可以转换 null 和 undefined,而 toString() 不可以。 var myNum = 15; console.log(myNum.toString()); //输出"15" console.log(myNum.toString(16)); //输出"F" console.log(String(myNum)); //输出"15" 布尔型与其他类型的相互转换 布尔型的只有两个 true 和 false 。转换规则如下: 布尔型转为字符串直接就是字符串 true 或者 false; 布尔型中的 true 转换为数字 1,布尔型中的 false 转换为数字 0; 数字 0、null、undefined、字符串转换为布尔型的 false,其他所有都是转换为 true。 下面例子中的 Boolean() 方法实现其他的类型转布尔型。 var myBool = ture; myBool.toString(); //返回"true" Number(true); //返回1 Boolean("js"); //返回true Boolean(""); //返回false 注意,上面讲的字符串是"",而不是字符串" ",这两个不同,后者双引号之间有一个英文字符的大小的位,他们转为布尔型的结果不同: Boolean(""); //返回false Boolean(" "); //返回true 隐式转换 JavaScript 是一种弱类型语言,不同类型的变量在运算符的作用下会发生类型转换。这个是编译环境下直接进行的,所以叫隐式类型转换。下面是一些转换规则: +运算的两个操作数是数字和字符串,数字会被转换为字符串; +运算的两个操作数是数字和布尔型,布尔型会被转换为数字; +运算的两个操作数是字符串和布尔型,布尔型会被转换为字符串; 减、乘、除、取余运算会把其他类型转换为数字; if 括号中单独的一个变量会被转换为布尔型。 编程要求 本关的编程任务是补全右侧代码片段中 Begin-End 中的代码,具体要求如下: 完成函数 mainJs(); 把函数三个参数(从左到右)依次转换为整数,整数和小数; 第一个参数既有可能是 12 这种纯整数的字符串形式,也有可能是 12a3 这种含有非数字字符的字符串; 第二个参数是 16 进制数字的字符串形式,如 af2; 第三个参数是纯小数的字符串形式,如 12.2; 具体请参见后续测试样例。 本关涉及的代码文件 DataKindConvert.js 的代码框架如下: //你需要把字符串args1,args2,args3转换为数字a,b和c. function mainJs(args1,args2,args3) { // 请在此处编写代码 /********** Begin **********/ /********** End **********/ return a+b+c; } 测试说明 测试过程: 平台将读取用户补全后的 DataKindConvert.js; 调用其中的 mainJs() 方法,并输入组测试数据; 接着测试的输出判断程序是否正确。 以下是测试样例: 测试输入: 5a2,1f,6.1 预期输出: 42.1 测试输入: 12.9,1a,3.1 预期输出: 41.1第2关:JavaScript 数据类型转换 100 学习内容 参考答案 记录 评论 任务描述 相关知识 字符串转整数 字符串转小数 数字转字符串 布尔型与其他类型的相互转换 隐式转换 编程要求 测试说明 任务描述 数据类型转换是开发过程中最常碰到的问题之一。 本关任务:函数 mainJs() 有三个字符串类型的参数 a、b 和 c,你需要分别把他们转换为整数,整数和小数。 第一个参数既有可能是 12 这种纯整数的字符串形式,也有可能是 12a3 这种含有非数字字符的字符串; 第二个参数是 16 进制数字的字符串形式,如 af2; 第三个参数是纯小数的字符串形式,如 12.2; 想要通过本关,请阅读下方的相关知识。 相关知识 在使用 JavaScript 进行的开发过程中,往往会碰到数据类型转换的需求,尤其是数字转字符串字符串转数字。 例如,在 JavaScript 中,从前端页面获得的都是字符串类型,包括数字也会被识别为字符串类型,这自然就产生了转换的需求。 字符串转整数 如果你想把一个字符串转换成整数,有两种方式。 使用 parseInt() 方法,参数为字符串,结果为该字符串转换而来的整数; 转化规则是:如果字符串的首字符不是一个数字,转换失败,返回 NaN;否则,转换到字符串中第一个不是数字的字符止,即,遇到字母、小数点下划线等字符立即停止转换。需要注意的是,16 进制的符号 0x 不会让转换停止。 parseInt() 还可以有第二个参数,表示待转换字符串的进制。下面给一些例子: parseInt("12"); parseInt("12.2"); parseInt("C",16); parseInt("12a2"); parseInt("0XC"); //以上均返回数字12 parseInt("a12"); //失败 使用 Number() 进行强制类型转换; 使用 Number() 转换一个字符串,这个字符串必须是只含有数字的字符串,即数字的字符串形式。与上面的 parseInt() 方法对比可知,Number() 实现的是更加严格的字符串转换为数字操作。因为对于 12a3 这种含有字母等非数字字符的字符串,Number() 会报错。下面是一些例子。 Number("12"); //返回12 Number("12a2"); //返回NaN Number(""); //返回0 字符串转小数 与整数相同,字符串转小数也有两种方式:parseFloat() 和 Number()。 parseFloat() 方法只转换到字符串中第一个不是数字的字符为止,当然这个字符不包括第一个小数点。这里有些不好理解,下面用例子解释。 parseFloat("12"); //返回12 parseFloat("12.2a"); //返回12.2 parseFloat("12.2.2"); //返回12.2,第二个小数点会让转换停止 parseFloat(null); //返回0 数字转字符串 toString() 实现一般的数字转字符串,String() 则是强制类型转换。 toString() 括号内有一个可选的参数,指以几进制的形式转换该字符串,如数字12调用 toString(16) 得到的结果就是 C,即12的16进制表示方式。 String() 可以转换 null 和 undefined,而 toString() 不可以。 var myNum = 15; console.log(myNum.toString()); //输出"15" console.log(myNum.toString(16)); //输出"F" console.log(String(myNum)); //输出"15" 布尔型与其他类型的相互转换 布尔型的只有两个 true 和 false 。转换规则如下: 布尔型转为字符串直接就是字符串 true 或者 false; 布尔型中的 true 转换为数字 1,布尔型中的 false 转换为数字 0; 数字 0、null、undefined、字符串转换为布尔型的 false,其他所有都是转换为 true。 下面例子中的 Boolean() 方法实现其他的类型转布尔型。 var myBool = ture; myBool.toString(); //返回"true" Number(true); //返回1 Boolean("js"); //返回true Boolean(""); //返回false 注意,上面讲的字符串是"",而不是字符串" ",这两个不同,后者双引号之间有一个英文字符的大小的位,他们转为布尔型的结果不同: Boolean(""); //返回false Boolean(" "); //返回true 隐式转换 JavaScript 是一种弱类型语言,不同类型的变量在运算符的作用下会发生类型转换。这个是编译环境下直接进行的,所以叫隐式类型转换。下面是一些转换规则: +运算的两个操作数是数字和字符串,数字会被转换为字符串; +运算的两个操作数是数字和布尔型,布尔型会被转换为数字; +运算的两个操作数是字符串和布尔型,布尔型会被转换为字符串; 减、乘、除、取余运算会把其他类型转换为数字; if 括号中单独的一个变量会被转换为布尔型。 编程要求 本关的编程任务是补全右侧代码片段中 Begin-End 中的代码,具体要求如下: 完成函数 mainJs(); 把函数三个参数(从左到右)依次转换为整数,整数和小数; 第一个参数既有可能是 12 这种纯整数的字符串形式,也有可能是 12a3 这种含有非数字字符的字符串; 第二个参数是 16 进制数字的字符串形式,如 af2; 第三个参数是纯小数的字符串形式,如 12.2; 具体请参见后续测试样例。 本关涉及的代码文件 DataKindConvert.js 的代码框架如下: //你需要把字符串args1,args2,args3转换为数字a,b和c. function mainJs(args1,args2,args3) { // 请在此处编写代码 /********** Begin **********/ /********** End **********/ return a+b+c; } 测试说明 测试过程: 平台将读取用户补全后的 DataKindConvert.js; 调用其中的 mainJs() 方法,并输入组测试数据; 接着测试的输出判断程序是否正确。 以下是测试样例: 测试输入: 5a2,1f,6.1 预期输出: 42.1 测试输入: 12.9,1a,3.1 预期输出: 41.1
10-23
语言规范:在自定义公式里面的各种符号(如,“;” )只能用半角不能用全角。 关键字if else while  break  continue  return (无大小写之分)常数浮点数、整数、字符串分隔符“ ”  ‘ ’  ( ) ;  {  }  注释/* */标识符由字母和数字组成,由字母开头,不分大小写运算符(优先级从高到低排列,同级同行)*  /+  -==  !=  >  <  >=  <=AndOr语句赋    a = b条件    IF (a==b) c=d;循环    while a==b  c=d;函数调用    func(a,b)直接访问数据项的函数例如:OPEN[t] 为t周期之前的开盘价所有行情数据项(CLOSE等)都与此相同。 标识符:       标识符在表达式中只存名称,保留在符号表。标识符包括函数名、参数名和变量名。函数名用来传递函数返回;参数名用于函数调用的参数传递;变量名在计算中存储中间计算结果。 分隔符:符号含义“ ”引用字符串‘  ’引用字符(  )控制运算的优先级 ;每行语句的结束标志{  }将多个语句组合成一个语句体/* */注释,无任何实际功能 赋语句:       其一般形式为:       a=b;         含义为将b的付给a。       几个运算符“=”“:=”“:”“:>”。其含义分别为“赋”、 “赋”、“赋并输出数字符串”、“赋并输出图形”。       注意:“=”和“:=”两个运算符的意义、用法完全相同。这样做主要是为了更好地兼容市场上目前的各种带有公式编辑功能的分析软件。 条件语句:    其一般形式为:    IF(逻辑表达式)  语句1;    ELSE  语句2;上述结构表示: 如果逻辑表达式的为非0(TURE)即真, 则执行语句1, 执行完语句1从语句2后开始继续向下执行; 如果表达式的0(FALSE)即假, 则跳过语句1而执行语句2。注意:1、条件执行语句中"ELSE 语句2;"部分是选择项, 可以缺省, 此条件语句变成:    IF(逻辑表达式)  语句1;    表示若逻辑表达式的为非0则执行语句1 , 否则跳过语句1继续执行。2、如果语句1或语句2有多于一条语句要执行, 必须使用"{"和"}" 把这些语句包括在其中, 此条件语句形式为:    IF(逻辑表达式)    {  语句体1;  }    ELSE     {  语句体2;  }    这里语句体指多个语句,每个语句都必须以“;”结尾。3. 条件语句可以嵌套, 这种情况经常碰到, 但条件嵌套语句容易出错,  其原因主要是不知道哪个IF对应哪个ELSE。    例如:    IF(x>20 OR x<-10)    IF(y<=100 AND y>x)        A="Good";    ELSE        B="Bad";    对于上述情况, 规定: ELSE语句与最近的一个IF语句匹配, 上例中的ELSE与IF(y<=100 AND y>x)相匹配。为了使ELSE与IF(x>20 OR x<-10)相匹配, 必须用花括号。如下所示:    IF(x>20 OR x<-10)    {     IF(y<=100 AND y>x)        A="Good";     }     ELSE     B="Bad";4. 可用阶梯式IF-ELSE-IF结构。   阶梯式结构的一般形式为:    IF(逻辑表达式1)  语句1;    ELSE IF(逻辑表达式2)   语句2;    ELSE IF(逻辑表达式3)   语句3; 循环语句:while循环的一般形式为:      while(条件)   语句;    while循环表示当条件为真, 便执行语句。直到条件为假才结束循环。并继续执行循环程序外的后续语句。       注意:    1、可以有多层循环嵌套。    2、语句可以是语句体, 此必须用"{"和"}"括起来。       break语句break语句通常用在循环语句中。当break语句用while循环语句中,可使程序终止循环而执行循环后面的语句, 通常break语句总是与if语句联在一起。 即满足条件便跳出循环。       注意:    1、break语句对if-else的条件语句不起作用。    2、在多层循环中, 一个break语句只向外跳一层。       continue 语句continue语句的作用是跳过循环本中剩余的语句而强行执行下一次循环。continue语句只用在while循环体中, 常与if条件语句一起使用, 用来加速循环。 函数调用:       调用函数的基本方式为:函数名(参数,参数,…)       其返回为函数里面的return语句规定的返回。若无return语句,则返回被调用函数里,以函数名命名的变量的。若无以函数名命名的变量,则返回最后一个输出的。若无输出的,则返回最后一个被调用的语句的。       例如:调用KDJ指标。KDJ函数的名称为kdj,其参数和内容如下:参数名最小最大默认N111009M12403M22403   函数内容为:   RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;   K:SMA(RSV,M1,1);   D:SMA(K,M2,1);J:3*K-2*D       则当您在其它函数里输入a=KDJ(8,6,6)的候,相当于计算N1=8,M1=6,M2=6的J,并把这个赋给a。注意:       1、当传递的参数数目不等于被调用函数设置的参数数目。              a、没有传递参数。则采用原来设置的默认参数计算。       b、传递参数少于被调用函数设置的参数数目。则将参数传过去,依次改变前面同样数目参数的,后面其它的参数采用原来设置的默认参数计算。c、传递参数大于被调用函数设置的参数数目。则将参数传过去,依次改变被调用函数的参数,多余的参数不起作用。2、函数名称不区分大小写。3、新建的函数,其函数名可能与其它以存在的函数里面的内部变量重名。这样在调用那个函数,那个内部变量将变成对这个新建函数的函数调用,从而产生错误。所以,在新建函数起名要注意。返回:自定义公式里面如果有多数据项输出,则调用此函数的返回默认为最后一个输出。如果希望确定某项输出则可用return,或者将函数名指定为其中一项输出。关于“”的问题:       所谓“”即指没有数据。在某些情况下,一些数据项可能取不到数据,这返回为“”。例如,yearrep(&jlr,4),其含义为取该公司3年前年报的净利润。如果某家公司上市间较短,而无三年前的年报数据,则其为“”。       1、“”与任何数据作计算,相应计算被取消。       例如:7×NULL(即“”)得到的结果为7。       2、“”与任何数据比较大小,“”较小。       例如:-7>NULL(即“”)得到的结果为1(即条件满足)。       这样的结果可能与您原来希望得到的数不符,如果您想避免这种情况可以用ISNULL函数来判断某个数据是否为“”(相关说明见后面的系统函数说明部分)。
10-26
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值