Réponse Analyse en bas
1, Q: Quel est le code suivant imprimera Pourquoi ??
window.a || (window.a ='1');
console.log(window.a);
2, Q: Qu'est-ce que le code suivant imprimera Pourquoi ??
var a = false + 1 ;
console.log(a);
3, Q: Quel est le code suivant imprimera Pourquoi ??
var b = false === 1;
console.log(b);
4, Q: Le code suivant affichera quels résultats Pourquoi ??
if (typeof(a) && (-true) + (+undefined) + '') {
console.log('结果为真');
}else{
console.log('结果为假');
}
5, Q: Le code suivant affichera quels résultats Pourquoi ??
var a = !!'' + !!' ' - !!false + '1' || '结果为假';
console.log(a);
6, Q: Le code suivant affichera quels résultats Pourquoi ??
var fn = (
function fn1() {
return 1;
},
function fn2() {
return 2;
}
)();
console.log(fn);
7, Q: Le code suivant affichera quels résultats Pourquoi ??
var a = 10;
if (function b() {}) {
a += typeof b;
}
console.log(a);
8, Q: Quel est le résultat des quelques impressions suivantes Pourquoi ??
function fn() {
var marty = {
name: 'marty',
printName: function () {
console.log(this.name);
}
}
var test1 = {
name: 'test1'
}
var test2 = {
name: 'test2'
}
var test3 = {
name: 'test3'
}
test3.printName = marty.printName;
marty.printName.call(test1);// 1:
marty.printName.apply(test2);// 2:
marty.printName();// 3:
test3.printName();// 4:
}
fn();
9, Q: Le code suivant affichera quels résultats Pourquoi ??
var bar = {
a: '1'
}
function fn() {
bar.a = 'a';
Object.prototype.b = 'b';
return function () {
console.log(bar.a);
console.log(bar.b);
}
}
fn()();
-
1, la réponse est:
“1”
résolution:
原理在于小括号的优先级高于其他运算符, 所以先赋值 window.a='1' 然后在进行或运算。
-
2, la réponse:
1
résolution:
隐式类型转换 false 为 0 ,0 + 1 结果为1
-
3, la réponse est:
false
résolution:
隐式类型转换false 为 0
-
4, la réponse est:
结果为真
résolution:
typeof(a) 为 “undefined” ,隐式类型转换 (-true) 为 -1 ,(+undefined) 为 NaN 。-1 + NaN + '' = “NaN” , 所以结果为真
-
5. Réponse:
“11”
Analyse:
隐式类型转换 !!'' 为 0 , !!' ' 字符串空格为 1 , !!false 为 0 , '1' , 1 + “1” =“11”
Note:对字符串和数字进行加法运算,数字转成字符串!
-
6. Réponse:
2
résolution:
逗号作为运算符使用, 结果为最后一个fn2() 。立即执行fn2()输出返回结果
-
7. Réponse:
“10undefined”
résolution:
(function b() {}) 是作为表达式使用,直接忽略掉函数名 。所以b 是一个未定义的状态
-
8, la réponse est:
test1 test2 marty test3
résolution:
这是一个this指向的问题:1、2 分别被 call()、apply() 改变了this的指向 3 、正常调用对象方法。4、将方法赋值给test3调用this指向test3
-
9, la réponse est:
a b
résolution:
这里形成了一个闭包 返回一个函数 , fn() 调用时修改bar.a的值。bar.b 在原型链上寻找到顶级Object.prototype的时候获得 b值