Daily-Interview-Question icon indicating copy to clipboard operation
Daily-Interview-Question copied to clipboard

第 34 题:简单改造下面的代码,使之分别打印 10 和 20。

Open jefferyE opened this issue 5 years ago • 82 comments

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)
})()

jefferyE avatar Mar 15 '19 01:03 jefferyE

打印 20 :

var b = 10;
(function (){
  b = 20;
  console.log(b);
})();

打印 10:

var b = 10;
(function (){
  console.log(b);
  b = 20;
})();

XiaoLuo01 avatar Mar 15 '19 01:03 XiaoLuo01

打印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);

jjeejj avatar Mar 15 '19 01:03 jjeejj

干脆一块改造了

var b = 10;
console.log(b);

(function b() {
  var b = 20;
  console.log(b);
})();

IWANABETHATGUY avatar Mar 15 '19 02:03 IWANABETHATGUY

打印20和10:

    var b = 10;
    (function b(b){
        b = 20;
        console.log(b); 
    })(b);
 console.log(b);

ligoudan1 avatar Mar 15 '19 02:03 ligoudan1

var b = 10; (function b(b){ console.log(b); b = 20; console.log(b); })(b);

qewqewzzz avatar Mar 15 '19 02:03 qewqewzzz

var b = 10;
(function b(){
    var b = 20; //or let b = 20;
    console.log(this.b);
    console.log(b); 
})();

jackchenl avatar Mar 15 '19 03:03 jackchenl

// 打印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); })();

LaoLeo avatar Mar 15 '19 03:03 LaoLeo

分别打印出 10 和 20

ghost avatar Mar 15 '19 05:03 ghost

var a = 10;
(function a() {
    var a = 20
    console.log(a)
})();
console.log(a);
// 20
// 10

在立即执行函数表达式里,对a进行var声明,是重新声明了一个变量

bran-nie avatar Mar 15 '19 06:03 bran-nie

    var b = 10;
    (function b(b){
        console.log(window.b);
        b = 20;
        console.log(b); 
    })();

dorseysen avatar Mar 15 '19 07:03 dorseysen

同时打印10 和20

var b = 10; (function b() { let b = 20; console.log(b) })(b); console.log(b);

y1324 avatar Mar 15 '19 09:03 y1324

打印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
})();

chenchangyuan avatar Mar 16 '19 04:03 chenchangyuan

  var b = 10;
  (function b(){
    console.log(window.b);   // 打印10
    var b = 20;
    console.log(b);     // 打印20
  })();

DangoSky avatar Mar 17 '19 05:03 DangoSky

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 avatar Mar 18 '19 15:03 huanglvming

@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里关于基本数据类型和引用数据类型内存空间的存储方式。

DangoSky avatar Mar 18 '19 16:03 DangoSky

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只是在作用于函数里面。

y1324 avatar Mar 19 '19 02:03 y1324

不是很理解 这个自执行函数里面的 变量被重新赋值后 为啥还是输出之前的变量值函数

mengfei-nie avatar Mar 21 '19 03:03 mengfei-nie

console.log(10); console.log(20);

shizhenbin avatar Mar 26 '19 09:03 shizhenbin

console.log(10); console.log(20);

你是来搞笑的吗?????? :sweat_smile:

jjeejj avatar Mar 26 '19 11:03 jjeejj

打印10 var b = 10; (function b(){ b = 20; console.log(window.b); })(); 打印20 (function (){ b = 20; console.log(b); })();

hmmoshang avatar Mar 28 '19 04:03 hmmoshang

这题目问得不是很严谨

zhw2590582 avatar Mar 29 '19 06:03 zhw2590582

console.log(10); console.log(20);

你是来搞笑的吗?????? 😅兄台厉害

frjcxy avatar Mar 30 '19 13:03 frjcxy

var b = 10;
(function b(b){
    console.log(b)
    b = 20;
    console.log(b);
})(b);

pangqiang avatar Apr 02 '19 07:04 pangqiang

打印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
})();

找到一个答案一样的,又没说不能改打印体😂

yu910709 avatar Apr 03 '19 07:04 yu910709

不是很理解 这个自执行函数里面的 变量被重新赋值后 为啥还是输出之前的变量值函数

看第33题

yu910709 avatar Apr 03 '19 07:04 yu910709

var b = 10;
(function b(){
    var b = 20;
    console.log(this.b);
	console.log(b);
})();

qinnnn avatar Apr 09 '19 06:04 qinnnn

我写一下我的理解和解法吧(既然改写应该还是要在原来题目上最小改动) var b = 10; (function b(){ var b = 20; console.log(b); })();

var b = 10; (function b(){ b = 20; console.log(window.b); })();

kevinlorry avatar Jul 09 '19 08:07 kevinlorry

console.log(10,20) 应题目要求,不考虑出题者的意图,第一反应是这个(手动滑稽)

chenshiai avatar Jul 10 '19 07:07 chenshiai

var b = 10;
(function b(){
    b = 20;
    console.log(this.b); 
})();
// 10
var b = 10;
(function b(){
    let b = 20;
    console.log(b); 
})();
// 20

Abiel1024 avatar Jul 10 '19 10:07 Abiel1024

既然能够简单修改代码 打印20 var b = 10; (function(){ b = 20; console.log(b); })(); 打印10 var b = 10; (function(){ console.log(b); })();

witsaint avatar Jul 11 '19 08:07 witsaint

var b = 10; 
(function b(){ 
	let b = 20; 
	console.log(self.b, b); 
})(); 
//10、20

应该算比较少了吧😐

blly5 avatar Jul 12 '19 09:07 blly5

这题太主观了,我可以一行不留的方式改造吗,🌹🐔

kerrysheng avatar Jul 16 '19 08:07 kerrysheng

只改动一处。 10: var b = 10; (function b(){ b = 20; console.log(10); })();

20: var b = 10; (function b(){ b = 20; console.log(20); })(); 没错我就是来搞笑的

srrgithub avatar Jul 19 '19 07:07 srrgithub

打印出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)
})()

mongonice avatar Jul 23 '19 08:07 mongonice

console.log(10) console.log(20)

icedJuice avatar Jul 29 '19 11:07 icedJuice

同时打出 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);
})();

icedJuice avatar Jul 29 '19 12:07 icedJuice

console.log(10); console.log(20);

我寻思着 这也改的不多啊

liuchuandai avatar Aug 02 '19 07:08 liuchuandai

var b = 10;
(function b(b){
    console.log(b)
    b = 20;
    console.log(b); 
})(b);

cheny-github avatar Aug 04 '19 08:08 cheny-github

看到好多都是先打印10,再打印20,题都理解错了,题目写的是分别打印10和20,是执行一次,打印两个数

var b = 10;
        (function b(b) {
            window.b = 20;
            console.log(window.b);
            console.log(b);
        })(b);

houchaowei avatar Aug 05 '19 06:08 houchaowei

有没有大神解释一下原理啊,很多修改跟直接写 console.log(10); console.log(20); 没什么区别

bruser avatar Aug 09 '19 03:08 bruser

使用箭头函数也可实现: 打印10: var b = 10; ( (b)=>{ this.b = 20; console.log(b) })(b); 打印20: var b = 10; ( ()=>{ b = 20; console.log(b) })();

mouzhengjie avatar Aug 13 '19 03:08 mouzhengjie

var b = 10; (function b(b) { console.log(b);b = 20; console.log(b) })(b)

Croash avatar Aug 13 '19 09:08 Croash

var b = 10; (function b() { b = 20;

    })(console.log(b))

//10 2333333(卖萌)

var b = 10; (function b(b) { b = 20; console.log(b) })() //20

rzh11111111 avatar Aug 14 '19 10:08 rzh11111111

// 20 var b = 10; (function b(){ var b = 20; console.log(b); })(); //10 var b = 10; (function b(){ b = 20; console.log(this.b); })();

webbobola avatar Aug 30 '19 03:08 webbobola

打印10 var b = 10; (function b(){ b = 20; console.log(window.b); })();

打印10 var b = 10; (function (){ b = 20; console.log(b); })();

tal007 avatar Sep 06 '19 09:09 tal007

这个简单改造好像小时候玩的火柴拼公式。 ------------------- 20 ------------------- var b = 10; (function () { b = 20; console.log(b) })() ------------------- 10 ------------------- var b = 10; (function () { b => 20; console.log(b) })() 不知道符不符合 哈哈~~

zhangyu0218 avatar Sep 18 '19 08:09 zhangyu0218

var b = 10; (function b() { var b = 20; console.log(this.b); // 10 console.log(b); // 20 })();

RimyZhang avatar Sep 23 '19 08:09 RimyZhang

  1. 打印10
var b = 10;
(function b(){
    b = 20;
    console.log(window.b); 
})();
  1. 打印20
var b = 10;
(function b(){
    var b = 20;
    console.log(b); 
})();

JohnieXu avatar Oct 31 '19 14:10 JohnieXu

  • 打印10
var b = 10;
(function b(){
    b = 20;
    console.log(window.b); 
})();
  • 打印20
var b = 10;
(function b(){
    var b = 20;
    console.log(b); 
})();

JohnieXu avatar Oct 31 '19 14:10 JohnieXu

var b = 10;
(function b () {
    var b = 20
    console.log(window.b, b)  // 10, 20
})()

Jmingzi avatar Nov 14 '19 12:11 Jmingzi

var b = 10;
(function b(){
    b = 20;
    console.log(b); 
})();

yygmind avatar Dec 16 '19 02:12 yygmind

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
})();

GitHubJiKe avatar Jan 13 '20 03:01 GitHubJiKe

console.log(10);
console.log(20);

特地登陆进来点个赞,这老哥机灵鬼,笑死我了

yipjianbo avatar Jan 13 '20 09:01 yipjianbo

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); 
})();

yipjianbo avatar Jan 13 '20 09:01 yipjianbo

原题: 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

zhangqiong27 avatar Feb 21 '20 02:02 zhangqiong27

image

Hideer avatar Feb 29 '20 05:02 Hideer

原题

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); 
})();

QZEming avatar Mar 06 '20 01:03 QZEming

有人把原题讲讲吗 为啥打印 [Function: b]

jingsy avatar Mar 31 '20 08:03 jingsy

var b = 10;
(function b(b){
    console.log(b)
    var b = 20;
    console.log(b);
})(b);

randomxiang avatar Apr 02 '20 08:04 randomxiang

// 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); 
})();

cMYour avatar Apr 07 '20 04:04 cMYour

  var b = 10;
 (function b() {
      let b=20;
      console.log(window.b);
      console.log(b);
 })();

zhangwen1932 avatar May 10 '20 04:05 zhangwen1932

console.log(10) console.log(20)

codexu avatar May 27 '20 08:05 codexu

//打印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); 
})();

jackchang2015 avatar Jun 06 '20 09:06 jackchang2015

var b = 10;
console.log(b);  //10
(function b(){
    var b = 20;
    console.log(b);  //20
})();

soraly avatar Jun 17 '20 09:06 soraly

// 打印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);

zengkaiz avatar Jul 22 '20 09:07 zengkaiz

// 20

var b = 10;
(function b(){
    var b = 20;
    console.log(b); 
})();

// 10

var b = 10;
(function b(){
    b = 20;
    console.log(window.b); 
})();

RoeyXie avatar Aug 03 '20 03:08 RoeyXie

Emmmm var b = 10; (function(){ console.log(b) b=20;
console.log(b) })()

LoveFreedom97 avatar Aug 06 '20 10:08 LoveFreedom97

这个题目问的不太好,函数表达式的name属于函数作用域的且不能重新复制,类似const定义,可以用来调用。

zelixag avatar Aug 18 '20 08:08 zelixag

var b = 10; 
(function b(b) {
   b = 20;
   console.log(window.b) // 10
   console.log(b)        // 20
})(b)

lsczy avatar Aug 25 '20 00:08 lsczy

var b = 10; (function b(b) { console.log(b); b = 20; console.log(b); })(b);

HeartYangj avatar Sep 10 '20 08:09 HeartYangj

// 10
var b = 10;
(function b(){
    b = 20;
    console.log(window.b); 
})();

// 20
var b = 10;
(function b(){
    let b = 20;
    console.log(b); 
})();

m7yue avatar Sep 11 '20 03:09 m7yue

console.log(10); console.log(20);

你是来搞笑的吗?????? 😅

真把我逗笑了

BlackCloverM avatar Sep 14 '20 05:09 BlackCloverM

//不太明白这题在考啥
var b = 10;
(function b(num){
    console.log(num)
    num = 20;
    console.log(num);
})(b);

BarneyRoos avatar Jan 04 '21 07:01 BarneyRoos

var b = 10; (function b() { console.log(window.b) let b = 20; console.log(b); })();

wangsiyuan4 avatar Feb 11 '22 02:02 wangsiyuan4


// 打印 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)


Yangfan2016 avatar Aug 04 '22 12:08 Yangfan2016