两个变量之间的差异

时间:2019-04-13 15:40:21

标签: javascript

嗨,我试图在浏览器的控制台上打印数组变量。首先,我尝试打印以下内容

var name = [ 'john', 'mark'];
var years = new Array(1990,1969,1948);

console.log(name[1]);
console.log(name.length);

并得到如下输出

image

最后,我添加了names而不是name 如下面的代码所示

var names = [ 'john', 'mark'];
var years = new Array(1990,1969,1948);

console.log(names[1]);
console.log(names.length);

上面的代码的输出显示在此

image

我能知道两者之间有什么区别吗?

3 个答案:

答案 0 :(得分:5)

您正在与内置的window.name属性发生冲突

  

window.name将使用toString方法将所有值转换为它们的字符串表示形式。

答案 1 :(得分:0)

window.name将提供您当前窗口的名称。更多信息:https://www.oreilly.com/library/view/javascript-the-definitive/0596000480/re335.html

即使您试图将变量links = {item['href'] for item in soup.select('a[href^=http], a[href^="/"]')} 更改为数组,其示例中的变量name仍被视为String。

打印变量namenames,您将看到差异。

console.log(name)的输出:"john,mark" console.log(names)的输出:["john", "mark"]

编辑:原因由@charlietfl提供

答案 2 :(得分:0)

原因:

window.name

  

实际上,当您使用 var 关键字 name 名称定义变量时>,您正在使用浏览器DOM的 window.name 字段。

当您使用name关键字定义var时,它不能覆盖stringwindow.name的{​​{1}}类型和行为,并且您的值将将其另存为字符串»array

证明:

"john,mark"

解决方案:

console.log(window.name); { var name = [ 'john', 'mark']; console.log(window.name); console.log(name); console.log(name[1]); console.log(name.length); }

如果您要使用window.name以外的let变量,则应使用name关键字而不是let

var