Daily-Interview-Question
Daily-Interview-Question copied to clipboard
第 34 题:简单改造下面的代码,使之分别打印 10 和 20。
var b = 10; (function b(){ b = 20; console.log(b); })();
我的解法: 1)打印10
var b = 10; (function b(b) { window.b = 20; console.log(b) })(b)
或者
var b = 10; (function b(b) { b.b = 20; console.log(b) })(b)
2)打印20
var b = 10; (function b(b) { b = 20; console.log(b) })(b)
或
var b = 10; (function b() { var b = 20; console.log(b) })()
打印 20 :
var b = 10;
(function (){
b = 20;
console.log(b);
})();
打印 10:
var b = 10;
(function (){
console.log(b);
b = 20;
})();
打印20 第一种方法:
var b = 10;
(function a(){
b = 20;
console.log(b);
})();
第二种方法:
var b = 10;
(function b(){
let b = 20;
console.log(b);
})();
对于该方法,按照昨天的解答 , b 不是无法修改的,但是现在修改成功了
第三种方法:
var b = 10;
(function (){
b = 20;
console.log(b);
})();
打印10
var b = 10;
(function b(b){
console.log(b);
b = 20;
})(b);
干脆一块改造了
var b = 10;
console.log(b);
(function b() {
var b = 20;
console.log(b);
})();
打印20和10:
var b = 10;
(function b(b){
b = 20;
console.log(b);
})(b);
console.log(b);
var b = 10; (function b(b){ console.log(b); b = 20; console.log(b); })(b);
var b = 10;
(function b(){
var b = 20; //or let b = 20;
console.log(this.b);
console.log(b);
})();
// 打印20 var b = 10; (function b(b){ b = 20; console.log(b); })(b);
var b = 10; (function (){ b = 20; console.log(b); })();
// 打印10 var b = 10; (function b(){ b = 20; console.log(this.b); })();
var a = 10;
(function a() {
var a = 20
console.log(a)
})();
console.log(a);
// 20
// 10
在立即执行函数表达式里,对a进行var声明,是重新声明了一个变量
var b = 10;
(function b(b){
console.log(window.b);
b = 20;
console.log(b);
})();
同时打印10 和20
var b = 10; (function b() { let b = 20; console.log(b) })(b); console.log(b);
打印10
var b = 10;
(function b(){
b = 20;
console.log(window.b);//10
})();
打印20
var b = 10;
(function b(){
var b = 20;
console.log(b);//20
})();
var b = 10;
(function b(){
console.log(window.b); // 打印10
var b = 20;
console.log(b); // 打印20
})();
var b = 10; (function b(){ b = 20; console.log(b); })();
我的解法: 1)打印10
var b = 10; (function b(b) { window.b = 20; console.log(b) })(b)
或者
var b = 10; (function b(b) { b.b = 20; console.log(b) })(b)
2)打印20
var b = 10; (function b(b) { b = 20; console.log(b) })(b)
或
var b = 10; (function b() { var b = 20; console.log(b) })()
麻烦问一下,打印10的第一种方法和打印20的第一种方法有什么不同,为什么输出的结果不一样?按照我的理解,打印20的第一种方法,函数里的b就是window.b,为什么输出结果不一样?
@huanglvming
var b = 10; (function b(){ b = 20; console.log(b); })();
我的解法: 1)打印10
var b = 10; (function b(b) { window.b = 20; console.log(b) })(b)
或者
var b = 10; (function b(b) { b.b = 20; console.log(b) })(b)
2)打印20
var b = 10; (function b(b) { b = 20; console.log(b) })(b)
或
var b = 10; (function b() { var b = 20; console.log(b) })()
麻烦问一下,打印10的第一种方法和打印20的第一种方法有什么不同,为什么输出的结果不一样?按照我的理解,打印20的第一种方法,函数里的b就是window.b,为什么输出结果不一样?
打印10的第一种方法:b已经作为参数被传进函数里去了,即使函数内使用 window.b = 20;
改变了全局的b也已经对它没有影响了,所以会打印出原先的10。
打印20的第一种方法:函数里的b并不是全局的b,修改它也不会影响到全局的b。
你可能没有注意到一点,基本数据类型的传递只是传递数值,比如此处不管你修改的是函数外的b还是函数内的b都不会对对方造成影响。对象的传递才是按引用传递,一个变了全部都要变,可以了解一下js里关于基本数据类型和引用数据类型内存空间的存储方式。
var b = 10 ; ( function b (){ b = 20 ; console . log (b); })();
我的解法: 1)打印10
var b = 10 ; ( function b ( b ) { window . b = 20 ; console . log (b) })(b)
或者
var b = 10 ; ( function b ( b ) { b . b = 20 ; console . log (b) })(b)
2)打印20
var b = 10 ; ( function b ( b ) { b = 20 ; console . log (b) })(b)
或
var b = 10 ; ( function b () { var b = 20 ; console . log (b) })()
麻烦问一下,打印10的第一种方法和打印20的第一种方法有什么不同,为什么输出的结果不一样?按照我的理解,打印20的第一种方法,函数里的b就是window.b,为什么输出结果不一样?
两个作用域不同,所以打印的不一样,第一个是外层的b,window上的。20的第一个打印的函数里面的,b只是在作用于函数里面。
不是很理解 这个自执行函数里面的 变量被重新赋值后 为啥还是输出之前的变量值函数
console.log(10); console.log(20);
console.log(10); console.log(20);
你是来搞笑的吗?????? :sweat_smile:
打印10 var b = 10; (function b(){ b = 20; console.log(window.b); })(); 打印20 (function (){ b = 20; console.log(b); })();
这题目问得不是很严谨
console.log(10); console.log(20);
你是来搞笑的吗?????? 😅兄台厉害
var b = 10;
(function b(b){
console.log(b)
b = 20;
console.log(b);
})(b);
打印10
var b = 10; (function b(){ b = 20; console.log(window.b);//10 })();
打印20
var b = 10; (function b(){ var b = 20; console.log(b);//20 })();
找到一个答案一样的,又没说不能改打印体😂
不是很理解 这个自执行函数里面的 变量被重新赋值后 为啥还是输出之前的变量值函数
看第33题
var b = 10;
(function b(){
var b = 20;
console.log(this.b);
console.log(b);
})();
我写一下我的理解和解法吧(既然改写应该还是要在原来题目上最小改动) var b = 10; (function b(){ var b = 20; console.log(b); })();
var b = 10; (function b(){ b = 20; console.log(window.b); })();
console.log(10,20) 应题目要求,不考虑出题者的意图,第一反应是这个(手动滑稽)
var b = 10;
(function b(){
b = 20;
console.log(this.b);
})();
// 10
var b = 10;
(function b(){
let b = 20;
console.log(b);
})();
// 20
既然能够简单修改代码
打印20
var b = 10; (function(){ b = 20; console.log(b); })();
打印10
var b = 10; (function(){ console.log(b); })();
var b = 10;
(function b(){
let b = 20;
console.log(self.b, b);
})();
//10、20
应该算比较少了吧😐
这题太主观了,我可以一行不留的方式改造吗,🌹🐔
只改动一处。 10: var b = 10; (function b(){ b = 20; console.log(10); })();
20: var b = 10; (function b(){ b = 20; console.log(20); })(); 没错我就是来搞笑的
打印出10
var b = 10;
(function b(a) {
b = 20
console.log(a)
})(b)
打印出 20
var b = 10;
(function b(b) {
b = 20
console.log(b)
})()
console.log(10) console.log(20)
同时打出 10 跟 20
var b = 10;
(function (c){
b = 20;
console.log(b);
console.log(c);
})(b);
只打出10
var b = 10;
(function (){
c = 20;
console.log(b);
})();
只打20
var b = 10;
(function (){
b = 20;
console.log(b);
})();
console.log(10); console.log(20);
我寻思着 这也改的不多啊
var b = 10;
(function b(b){
console.log(b)
b = 20;
console.log(b);
})(b);
看到好多都是先打印10,再打印20,题都理解错了,题目写的是分别打印10和20,是执行一次,打印两个数
var b = 10;
(function b(b) {
window.b = 20;
console.log(window.b);
console.log(b);
})(b);
有没有大神解释一下原理啊,很多修改跟直接写
console.log(10); console.log(20);
没什么区别
使用箭头函数也可实现: 打印10: var b = 10; ( (b)=>{ this.b = 20; console.log(b) })(b); 打印20: var b = 10; ( ()=>{ b = 20; console.log(b) })();
var b = 10; (function b(b) { console.log(b);b = 20; console.log(b) })(b)
var b = 10; (function b() { b = 20;
})(console.log(b))
//10 2333333(卖萌)
var b = 10; (function b(b) { b = 20; console.log(b) })() //20
// 20 var b = 10; (function b(){ var b = 20; console.log(b); })(); //10 var b = 10; (function b(){ b = 20; console.log(this.b); })();
打印10 var b = 10; (function b(){ b = 20; console.log(window.b); })();
打印10 var b = 10; (function (){ b = 20; console.log(b); })();
这个简单改造好像小时候玩的火柴拼公式。 ------------------- 20 ------------------- var b = 10; (function () { b = 20; console.log(b) })() ------------------- 10 ------------------- var b = 10; (function () { b => 20; console.log(b) })() 不知道符不符合 哈哈~~
var b = 10; (function b() { var b = 20; console.log(this.b); // 10 console.log(b); // 20 })();
- 打印10
var b = 10;
(function b(){
b = 20;
console.log(window.b);
})();
- 打印20
var b = 10;
(function b(){
var b = 20;
console.log(b);
})();
- 打印10
var b = 10;
(function b(){
b = 20;
console.log(window.b);
})();
- 打印20
var b = 10;
(function b(){
var b = 20;
console.log(b);
})();
var b = 10;
(function b () {
var b = 20
console.log(window.b, b) // 10, 20
})()
var b = 10;
(function b(){
b = 20;
console.log(b);
})();
var b = 10;
(function b(){
b = 20;
console.log(this.b);//10
})();
**********
var b = 10;
(function b(){
this.b = 20;
console.log(this.b); //20
})();
console.log(10);
console.log(20);
特地登陆进来点个赞,这老哥机灵鬼,笑死我了
var b = 10;
(function b(){
b = 20;
console.log(b);
})();
输出10
var b = 10;
(function b(){
b = 20;
console.log(this.b);
})();
输出20
var b = 10;
(function b(){
var b = 20;
console.log(b);
})();
原题: var b = 10; (function b(){ b = 20; console.log(b); })(); 打印20: (function b(b){ b = 20; console.log( b); })(b); // 20
(function b(){
let b = 20;
console.log(b);
})(); // 20
打印10: (function b(){ b = 20; console.log( this.b); })(); // 10
原题
var b = 10;
(function b(){
b = 20;
console.log(b);
})();
皮一下 打印10
var b = 10;
(function b(){
b = 20;
console.log(10);
})();
打印20
var b = 10;
(function b(){
b = 20;
console.log(20);
})();
认真做题 打印10
var b = 10;
(function b(){
b = 20;
console.log(this.b);
})();
打印20
var b = 10;
(function b(){
var b = 20;
console.log(b);
})();
有人把原题讲讲吗 为啥打印 [Function: b]
var b = 10;
(function b(b){
console.log(b)
var b = 20;
console.log(b);
})(b);
// 10
var b = 10;
(function b(){
b = 20;
// 此时的 this 指向 window 即:全局变量
console.log(this.b);
})();
// 20
var b = 10;
(function b(){
this.b = 20;
console.log(this.b);
})();
var b = 10;
(function b() {
let b=20;
console.log(window.b);
console.log(b);
})();
console.log(10) console.log(20)
//打印10
var b = 10;
(function (){
console.log(b);
})();
//
var b = 10;
(function b(){
b = 20;
console.log(this.b);
})();
//打印20
var b = 10;
(function (){
b = 20;
console.log(b);
})();
//
var b = 10;
(function b(){
let b = 20;
console.log(b);
})();
var b = 10;
console.log(b); //10
(function b(){
var b = 20;
console.log(b); //20
})();
// 打印20
var b = 10;
(()=>{
b = 20
console.log(b)
})()
// 打印20
var b = 10;
(function b(b){
b = 20;
console.log(b);
})();
// 打印20
var b = 10;
(function b(){
var b = 20;
console.log(b);
})();
// 打印10
var b = 10;
(function b(b){
window.b = 20;
console.log(b);
})(b);
// 20
var b = 10;
(function b(){
var b = 20;
console.log(b);
})();
// 10
var b = 10;
(function b(){
b = 20;
console.log(window.b);
})();
Emmmm
var b = 10;
(function(){
console.log(b)
b=20;
console.log(b)
})()
这个题目问的不太好,函数表达式的name属于函数作用域的且不能重新复制,类似const定义,可以用来调用。
var b = 10;
(function b(b) {
b = 20;
console.log(window.b) // 10
console.log(b) // 20
})(b)
var b = 10; (function b(b) { console.log(b); b = 20; console.log(b); })(b);
// 10
var b = 10;
(function b(){
b = 20;
console.log(window.b);
})();
// 20
var b = 10;
(function b(){
let b = 20;
console.log(b);
})();
console.log(10); console.log(20);
你是来搞笑的吗?????? 😅
真把我逗笑了
//不太明白这题在考啥
var b = 10;
(function b(num){
console.log(num)
num = 20;
console.log(num);
})(b);
var b = 10; (function b() { console.log(window.b) let b = 20; console.log(b); })();
// 打印 10
var b = 10;
(function b(c) {
b = 20;
console.log(c)
})(b)
// 打印20
var b = 10;
(function b(b) {
b = 20;
console.log(b)
})(b)