我看到其中一位大师这样做了:
var example = '';
然后他继续说:
example += '<div>just a div</div>';
我想知道这样做是否有任何区别:
var example;
example += '<div>just a div</div>';
我真的不知道如果通过第二种方法我做错了,如果是第一个例子,我必须编写如下所示的代码。
已更新!
非常感谢你的回答,好吧,我知道了我需要定义我的变量以便能够工作,但随后又出现了另一个问题......这位大师也在这样做:
var guess;
然后他做了:
guess += myfunction( upper );
其中myfunction声明如下:
function myFunction( upper ){
return Math.floor( Math.random() * upper ) + 1;
}
那么,为什么这里有所不同?你能否回答这个问题?
谢谢!
第二次更新!
再次感谢!
我决定发布JS大师正在做的整个代码,此时我不明白,所以你可能会清除我的怀疑。
var randomNumber = myFunction( 10 );
var guess;
var attempts = 0;
var answer = false;
function myFunction( upper ){
return Math.floor( Math.random() * upper ) + 1;
}
do{
guess = prompt( "I created a number from 1 till 10, can you guess it?");
attempts += 1;
if( parseInt( guess ) === randomNumber ){
answer = true;
}
}while( ! answer )
document.write( "Took you " + attempts + " attempts to guess the number " + randomNumber);
请看一下:
var guess;
以及后来如何宣布,所以为什么这里有效,但在我的第一个例子中,我必须把&#39;&#39;在声明我的变量时?
我希望我的问题对你来说足够清楚了!
感谢您的时间和耐心!
答案 0 :(得分:2)
当你这样做时:
var example;
example += '<div>just a div</div>';
你最终得到:
`"undefined<div>just a div</div>"`
这是因为当您不初始化变量时,它是undefined
,当您尝试将其添加到另一个字符串时,可以将其转换为合理的字符串"undefined"
。
当你这样做时:
var guess;
guess += myfunction( upper );
function myFunction( upper ){
return Math.floor( Math.random() * upper ) + 1;
}
您要向number
添加undefined
。这导致NaN
(不是数字),因为undefined
无法转换为合理的number
。
您可以通过打开浏览器的开发人员工具并在控制台中运行代码来自行检查。
修改强>
当你这样做时:
var guess;
guess = prompt( "I created a number from 1 till 10, can you guess it?");
没有问题,因为您只是将string
分配给guess
变量。在前面的示例中,您向变量添加了一些内容,这意味着如果它们是不同的类型,那么JavaScript必须尝试做一些合理的事情。
答案 1 :(得分:2)
如果您没有初始化变量,则其值为undefined。
在上一个示例中,您实际上是在说example = undefined + '<div>just a div</div>'
并且undefined将转换为字符串并以此方式输出。可能不是你想要的。
一般来说,在使用变量之前初始化变量是个好主意,这就是为什么var example = ''
在这种情况下更可取。
答案 2 :(得分:1)
const IconOption = (props) => (
<MenuOption {...props}>
<Icon name={props.iconName} size={30} />
{props.children}
</MenuOption>
);
<MenuOptions customStyles={MenuOptionStyles}>
<IconOption
iconName='md-bookmark'
onSelect={this.onSelectSave.bind(this)}
text={MenuOptionStrings.Save}
/>
</MenuOptions>
答案 3 :(得分:0)
如果您没有初始化变量,那么它将是undefined
附加到未定义的对象没有帮助。
var example = '';
在这里,您要将一个空字符串初始化为该变量,因此将字符串附加到另一个字符串将提供所需的字符串连接输出。
输出:
"undefined<div>just a div</div>"
"<div>just a div</div>"
答案 4 :(得分:0)
是的,有一个区别是来自master的第一个snipet创建了一个变量示例并给它一个默认值,第二个语句用'just a div'来合并值 。您的代码有错误,因为它为不存在的值添加值,因为变量示例没有默认值。