第1关:JavaScript知识训练-运算符
-
1、在JavaScript中,两个整数进行除(/)运算,其结果也为整数。
B、错误
-
2、x={x:1};y={y:1};z=1;n='1’下面结果为true的是( )
D、z == n
-
3、假设val已经声明,且定义为任何数值。三元运算符
A、(val !== '0')?'define':'undefine';
的返回值是( )define
-
4、假设有如下代码,那么a(10)的返回结果是( )
A、function a(a){
a^=(1<<4)-1;
return a;
}
5
-
5、下面这段javascript代码,最后一句alert的输出结果是( )
C、var msg='hello';
for(var i=0;i<10;i++){
var msg = 'hello'+i*2+i;
}
alert(msg);
hello189
第2关:算术运算符
任务描述
本关任务:给定两个字符串变量,把它们转为数字后相除,拼接被除数、除数和余数为一个新的字符串。
例如:
a
为"5"
,b
为"3"
,则c
为数字2
,拼接后结果为字符串"532"
。a
为"23asdf"
,b
为"3fe"
,则c
为数字2
,拼接后结果为字符串"23asdf3fe2"
。相关知识
JavaScript
中的算术运算符除了数学中常见的加减乘除外,还有递增、递减和取余等。+ - * / %
运算符JavaScript
中的加号除了具有数学中将两个数字相加的作用外,还能对字符串做连接操作。对两个数字相加和数学中一样,字符串相加就是拼接字符串的意思,比如
Java+Script
的结果是字符串JavaScript
。当字符串和数字相加时需要进行类型转换,数字会先转为字符串,然后再做字符串的拼接
字符串与数的转换
(1)parseInt()函数 parseInt()是系统内置函数,可可解析一个字符串,并第一个数字字符串返回一个整数。 语法格式为: parseInt(string, radix)
其中,string是被解析的字符串,radix是要解析的数字的基数。 当参数 radix 的值为 0或缺省时,parseInt() 会根据 string 来判断数字的基数。
例如: parseInt("123")的返回值为123 parseInt("4m6")的返回值为4 parseInt("a2")的返回值为NaN parseInt(12,16)的返回值为18
(2)toString()函数 toString()是Object对象的方法,用于将当前对象以字符串的形式返回。由于所有对象都"继承"了Object的对象实例,因此都可以使用该方法实现转换。 语法格式: object.toString( )
例如: var num1 = 15;
a = num1.toString();
var num2 = 10;
b = num2.toString();
c = a + b
c的输出结果为1512。
编程要求
本关的编程任务是补全右侧代码片段中Begin
至End
中间的代码,完成函数mainJs()
,具体要求如下: (1)将两个数字字符串参数a
和b
转换为数字a1和b1; (2)计算a1
除以b1
的余数c
;
(3) 将a
、b
、c
分别转换为字符串;
-
递增运算符和递减运算符
递增运算符
++
表示对一个数做加1
的操作,递减运算符--
表示对一个数做减1
的操作。++
符号在数字的左边还是右边会影响运算的顺序,当++
在数的左边时,表示先对数加1
,再返回加1
后的结果。在右边时,表示先返回该数的值,再加1
。下面的例子展示了这种区别。递减运算符
--
同理。 - 当参数 radix 的值为 0,或没有设置该参数时,parseInt() 会根据 string 来判断数字的基数。
- 如果 string 以 0 开头,那么 ECMAScript v3 允许 parseInt() 的一个实现把其后的字符解析为八进制或十六进制的数字
- 如果 string 以 1 ~ 9 的数字开头,parseInt() 将把它解析为十进制的整数。
- 具体请参见后续测试样例
以下是测试样例:
测试输入: 100,9
预期输出: 10091
测试输入: -10,3
预期输出: -103-1
测试输入: 23as,3ss
预期输出: 23as3ss
编程要求
本关的编程任务是补全右侧代码片段中Begin
至End
中间的代码,完成函数mainJs()
,具体要求如下:
(1) 比较字符串a
和b
的大小;
(2)使用if...else语句进行分支设计,如果a>b
,则返回a
逻辑与b
的结果,否则返回a
逻辑取反的结果(返回时使用return
);
-
function mainJs(a,b) { //请在此处编写代码 /***********Begin**********/ var a; var b; var c; var d; var e; d=parseInt(a); e=parseInt(b); c=d%e;//c为数字类型,需要转换为字符串类型 String(c); /*********End************/ return a+b+c; }
第3关:比较和逻辑运算符任务描述
本关任务:判断两个字符串的大小,第一个大于第二个则返回两者逻辑相与的结果,否则返回第二个逻辑取反的结果。
例如:
a
为字符串"d"
,b
为字符串"b"
,因为字符串"d"
大于字符串"b"
,所以返回"d"
逻辑与"b"
,即字符串"b"
。相关知识
比较运算符
JavaScript
中的比较运算符有==
,===
,>
,<
,!=
,>=
等。 ==
叫做相等,===
叫做严格相等。双等号和三等号的区别是:三等号要求数据类型和值都相等,双等号只需要值相等即可,相等包含严格相等。-
从比较过程来看,严格相等先比较两个对象的数据类型是否相等,不相等则结束比较,返回
false
,相等在数据类型不同时,尝试进行数据类型转换,例如,在字符串和数字的比较中,字符串会被转为数字再比较;布尔值true
转为数字1
,布尔值false
转为数字0
。如果数据类型相同,相等和严格相等都会直接比较值,值相等返回
true
。 - 不等 对应于上面的等号,不等号也有两种:
!=
和!==
。!=
和==
互为相反,==
成立,!=
一定不成立。!==
和===
互为相反,严格相等成立,则严格不相等不成立。 -
其它
大于,小于,大于等于,小于等于的比较规则如下: 比较的两个对象都是数字,按照数学中数字的比较方法。 数字和字符串比较,字符串转为数字后再比较。 字符串和字符串比较,从第一个字符开始,逐个比较,发现不相等立即返回。字符按照
ASCII
编码值的大小比较,一般只要记住:数字<大写字母<小写字母,字母a
小于字母z
,A
小于Z
, 比较过程中,当一个字符串结束另外一个字符串还有,还没有比较出大小,则长的字符串较大。 -
逻辑运算符
在介绍逻辑运算符之前,我们必须明确逻辑运算符的操作数只能是布尔型,其他类型都会被转换为布尔型:除了
0
,null
,undefined
,""
外,其他的值转换为布尔值都是true
。 -
逻辑与 逻辑与有两个操作数,中间用
&&
连接,只有两个操作数都是true
结果才是true
; 其中一个操作数不是布尔型,当左操作数为真值时,返回右操作数。当左操作数为假值时,返回左操作数。 -
逻辑或 逻辑或同样有两个操作数,用
||
连接,至少有一个操作数为true
时结果为true
; 其中一个操作数不是布尔型,当左操作数为真值时,返回左操作数。当左操作数为假值时,返回右操作数。 -
逻辑非 逻辑非只有一个操作数,
!
后连接操作数或表达式,意思是将操作数取反; 如果操作数不是布尔型,编译器首先将其他类型转换为布尔型,然后返回true
或者false
。 -
平台将读取用户补全后的
LoginBoolSymbol.js
; -
调用其中的
mainJs()
方法,输入若干组测试数据; -
最后根据测试结果判断程序是否正确
function mainJs(a,b) { //请在此处编写代码 /********Begin***************/ if(a>b){ return a&&b ; }else{ return !a ; } /**********End****************/ }
第4关:条件运算符
任务描述
本关任务:计算并返回两个字符串中较大的字符串。字符串的大小比较直接使用比较运算符
>
或者<
即可。例如:对于字符串
aa
和ab
,要求返回ab
。相关知识
条件运算符最主要的作用是代替选择结构,简化代码。
条件运算符
条件运算符由
?
和:
构成,三个操作数分别在?
的左边、右边以及:
的右边,第一个操作数如果是真值,整个表达式返回第二个操作数的值;第一个操作数如果是假值,返回第三个操作数的值。一般我们说到
JavaScript
中的三元运算符,指的就是条件运算符,因为它有三个操作数。条件运算符通常用来简化表达式。 - 具体请参见后续测试样例。
-
平台将读取用户补全后的
ConditionSymbol.js
; -
调用其中的
mainJs()
方法,输入若干组测试数据; -
接着根据测试的输出判断程序是否正确。
function mainJs(a,b) { //请在此处编写代码 /*********begin*********/ var c=a>b?a:b; return c; /*********end*********/ }
第5关:运算符的优先级和结合性任务描述
本关任务:我们将给出函数
mainJs()
的完整代码,要求在函数体内第三句以及第五句中添加适当的括号,实现编程要求里面的要求。要想完成本关任务,必须熟悉运算符的优先级和结合性,请阅读下面的相关知识。
相关知识
在我们平时的学习中,经常会看到一些前辈的代码短小精悍却功能复杂,大部分是通过把大量运算符放在一起结合使用实现的,所以我们要深入理解运算符的优先级和结合性,写出漂亮的代码!
运算符的优先级
JavaScript
中运算符的优先级和数学中运算符的优先级意思相同,优先级高的运算符比优先级低的运算符先计算,例如数学中1+2*3
算式,先计算2*3
,结果再与1
相加,所以乘法的优先级高于加法,在JavaScript
中,不同的优先级也是这个作用。下面是常见的运算符的优先级:
分类 运算符 含义 结合性 1 ++ 前后增量 R 1 -- 前后减量 R 1 ! 逻辑非 R 2 * / % 乘 除 求余 L 3 + - 加减 L 4 < <= > >= 比较数字顺序 L 4 in 测试属性是否存在 L 5 == 判断相等 L 5 != 判断不等 L 6 & 按位与 L 7 && 逻辑与 L 8 ?: 条件运算符 R 9 = 赋值 R 9 += -= *= /= %= 运算且赋值 R 10 , 忽略第一个操作数 L 从上到下优先级逐渐降低。第一栏数字相同的运算符优先级相同,对于这个表格,不需要全部记住,但是常见的需要记住,比如加减乘除的优先级高于比较运算符,赋值运算符的优先级几乎是最低的,
运算符的结合性
运算符的优先级是针对不同优先级的运算符来说的,对于同一级的运算符,运算顺序取决于运算符的结合性,比如加法和减法的优先级相同,而加法和减法都是从左向右结合,所以
a+b-c
式中,会先计算a+b
,即按照阅读的顺序计算。也有很多运算符是从右到左结合的,比如取反、逻辑非。
上面图中的第三栏就是结合性,
R
表示从右向左结合,L
表示从左到右结合,从左向右的占多数,这和我们在数学中的习惯相同。 - 函数参见下面的测试说明部分。
-
平台将读取用户补全后的
Priority.js
; -
调用其中的
mainJs()
方法,输入若干组测试数据; -
接着根据测试后的输出判断程序是否正确。|
function mainJs(a,b) { var a = parseInt(a); var b = parseInt(b); //请在此处编写代码 /*********begin*********/ var c=((a-1)+b)*b==24?1:0; var d=4; var e = (c*d)+d; /*********end*********/ return e; }