关于+和+=的问题

我不是艾克
  • 521
    function displayInfo(args){
        var output = "";
        if(typeof args.name == "string"){
            output += "Name:" + args.name + "\n";
        }
        if(typeof args.age == "number"){
            output += "Age:" + args.age + "\n";
        }
    alert(output);
    }
    displayInfo({
        name:"Nicholas",
        age:29
    })
    
    displayInfo({
        name:"Greg"
    })

1.为什么这里把 output += "Name:" + args.name + "n"; output += "Age:" + args.age + "n";的 += 变成 + 结果会不一样 
2.var output = ""; 在这里有什么含义

回复
阅读 1.9k
6 个回答

1. output += xxx表示output = output + xx,当output为数字类型的时候会累加赋值,为字符串时会拼接赋值,output的值会不断变化,而+=换成+的话不会改变output的值,用=的话会覆盖,比如两个if都满足的话,那么第一个if中的name就会被age覆盖掉

clipboard.png

2. 至于为什么一开始要为output赋值空字符串,那是因为下面需要对output这个字符串进行操作,如果不提前声明,会undefined

声明和初始化变量

var output = "";
output += "Name:" + args.name + "n";

等同于

output = output + "Name:" + args.name + "n";
  1. += 是 output = output + "Name:" + args.name + "n"; 的缩写.
    2.var output = ""; 定义变量,方便后续使用.

output += "Name:" + args.name + "n";等于output= output+"Name:" + args.name + "n";
+就是运算符或连字符

Time
  • 1
新手上路,请多包涵

其实你可以自行使用打印的方法自己看一下是什么
比方:
x = 1
x += 1
打印:2
在执行: x += 1
打印:3
推测出来,很简单地

@Iakihsoug 的回答不错,我补充一句

var output = "" 在这里只是初始化 output,确保它的值是一个字符串。其作用有2

  • 如果后面两个分支都没走到,输出(这里是用的 alert() 表示输出)的是一个空字符串而不是 undefined

  • 如果走到任何一个分支,可以确保 += 是往一个字符串上加(连接)的

你知道吗?

宣传栏