js题
以下代码中val、data、data2、x的值分别是什么? 为什么
var a = 1, b = 2, c = 3;
var val = typeof a + b || c >0
console.log(val)
答案:number2
解析:var val = typeof a + b || c >0等同于var val = ((typeof a) + b) || (c >0)
var d = 5;
var data = d ==5 && console.log('bb')
console.log(data)
答案:先显示bb,再输出undefined
解析:var data = d ==5 && console.log('bb')等同于var data = (d ==5) && [console.log('bb')],其中console.log('bb')进行判断时结果为undefined,又因为输出是在判断之前执行所以先输出bb再判断
更改:var data = d ==5 && console.log('bb')
不应该先说
1. 因为按照运算符优先级,先算&& ,
2. 然后算 d===5 是 true
3. 然后就继续 执行右侧 log
4. 然后返回右侧 log 方法的return返回值
5. 因为 log 没有返回值,所以使用函数默认的,默认的是 undefine
所以 data 是 undefined。
var data2 = d = 0 || console.log('haha')
console.log(data2)
答案:先显示haha,再输出undefined
解析:var data2 = d = 0 || console.log('haha')等同于var data2 = (d = 0) || [console.log('haha')],先给d赋值为0,进行判断时结果为false,所以要继续进行后面的判断,后面的判断同上题
var x = !!"Hello" + (!"world", !!"from here!!");
console.log(x)
答案:2
解析:var x = !!"Hello" + (!"world", !!"from here!!");等同于var x = 1 + (0, 1);,进行加法时会选择最后一个数字进行相加
遍历数组,打印数组里的每一项的平方
var arr = [3,4,5]
答案:
var arr = [3,4,5]
for(items in arr){
console.log(arr[items]*arr[items]);
}
以下代码的输出结果是? 为什么?
var a = 1;
var b = 3;
console.log( a+++b );
答案:4
解析:a+++b等同于(a++)+b,在最终结果计算完之后再将a+1
写出如下知识点的代码范例
if-else 的用法
if(condition){
//true
}else {
//false
}
switch-case 的用法
switch(expresstion){
case value1:
statement;
break;
case value2:
statement;
break;
case value3:
statement;
break;
default:
statement;
}
while 的用法
while(expression){
statement;
}
do-while 的用法
do{
statement;
}while(expression);
for 遍历数组的用法
for(var i = 10; i > 0; i--){
console.log(i);
}
for-in 遍历对象的用法
for(property in object){
statement
}
break 和 continue 的用法
for(var i = 1; i< 10; i++){
if(i % 3 === 0){
break;
}
console.log(i);
}
输出结果为1 2
当i%3===0的时候直接强制退出循环
==========================================
for(var i = 1; i< 10; i++){
if(i % 3 === 0){
continue;
}
console.log(i);
}
输出结果为1 2 4 5 7 8
当i%3===0的时候跳出本次循环,进行下次循环