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}`));//這里是反點,不是普通的引號