为什么javascript中的变量似乎包含值“quot;“未定义”;即使它被定义了
如果我运行以下javascript代码,浏览器会发出“UnfinedABC”警报 对我来说,它看起来像是我定义了变量x,那么为什么它看起来是未定义的呢为什么javascript中的变量似乎包含值“quot;“未定义”;即使它被定义了,javascript,Javascript,如果我运行以下javascript代码,浏览器会发出“UnfinedABC”警报 对我来说,它看起来像是我定义了变量x,那么为什么它看起来是未定义的呢 var x = ""; x += "abc"; alert(x); 试试这个。您正在尝试添加'abc'和未定义的,这将导致未定义的未定义的是任何未赋值变量的默认值。因此,var x表示a=未定义。当您向它添加“abc”时,实际上您正在执行未定义+“abc”。最后,undefined被字符串化为“undefined”,然后连接到“abc”,并转到
var x = "";
x += "abc";
alert(x);
试试这个。您正在尝试添加
'abc'
和未定义的,这将导致未定义的未定义的是任何未赋值变量的默认值。因此,var x
表示a=未定义
。当您向它添加“abc”
时,实际上您正在执行未定义+“abc”
。最后,undefined
被字符串化为“undefined”
,然后连接到“abc”
,并转到“undefinedabc”
为了初始化varx
,您应该为其分配一个空字符串(请记住JavaScript是按字母顺序键入的):
描述此行为。首先检查a的行为,特别是:
"Variables are initialised to undefined when created."
然后检查的行为(将运算符的行为应用于前面的操作)
具体而言,第7点:
"If Type(lprim) is String or Type(rprim) is String, then
Return the String that is the result of concatenating ToString(lprim) followed by ToString(rprim)"
因此,根据ToString,由于“abc”
是一个字符串,x
将被转换为字符串。x、 正如我们从上面所知道的,是未定义的
最后,检查抽象操作的行为,特别是,未定义的参数会导致字符串“未定义”。不要将声明与定义混淆。只要不给它赋值,它的值就是“未定义”。如果将+=
与字符串一起使用,则它将始终获取旧的
字符串值,并将新值附加到该字符串中。但是,old
字符串值是“未定义的”。谢谢Eric,我确实犯了那个错误。x
变量已定义。它的初始值不是。我会接受这个答案,因为您向我指出,undefined是变量的默认值。很高兴为您提供帮助。谢谢:)
"Variables are initialised to undefined when created."
"If Type(lprim) is String or Type(rprim) is String, then
Return the String that is the result of concatenating ToString(lprim) followed by ToString(rprim)"