JavaScript部分运算符和流程控制部分作业
Q:以下代码的输出结果是? 为什么?
- var a = 1;
console.log( a+++a );
A:输出结果为2。a++的结果还是为1,之后a的值变为2,所以结果相当于1+2 == 3
Q:以下代码的输出结果是? 为什么?
var a = 1;
var b = 3;
console.log( a+++b );
A:结果为4。
Q: void 0 和 undefined在使用场景上有什么区别?
A: 由于js中可以用undefined作为变量的名字,所以可能造成混淆。用void 0可以得到真正的“undefined”;
Q: 以下代码输出结果是? 为什么?
var a = 1, b = 2, c = 3;
var val = typeof a + b || c >0
console.log(val)// number2
var d = 5;
var data = d ==5 && console.log('bb')
console.log(data)// true
var data2 = d = 0 || console.log('haha')
console.log(data2)// undefined
var x = !!"Hello" + (!"world", !!"from here!!");
console.log(x) //2
Q:遍历数组,把数组里的打印数组每一项的平方.
var arr = [3,4,5];
A:
function square(array) {
for(let i = 0; i < array.length; i++){
console.log(array[i]*array[i]);
}
}
square(arr);
Or
function square(array, fn) {
for(let i = 0; i < array.length; i++){
fn(array[i], i, array);
}
}
square(arr,(x) => console.log(x*x));
Q:遍历 JSON, 打印里面的值 (难度**)
var obj = { name: 'hunger', sex: 'male', age: 28 }
A:
function traversal(object, fn) {
for(let key in object){
fn(key, object[key]);//注意这里有个坑,因为key是字符串的形式,所以不能写为object.key的形式,而应该写为object[key].
}
}
traversal(obj, (key, value) =>console.log(`${key}: ${value}`));//这里是反点,不是普通的引号