嗨,我试图在浏览器的控制台上打印数组变量。首先,我尝试打印以下内容
var name = [ 'john', 'mark'];
var years = new Array(1990,1969,1948);
console.log(name[1]);
console.log(name.length);
并得到如下输出
最后,我添加了names
而不是name
如下面的代码所示
var names = [ 'john', 'mark'];
var years = new Array(1990,1969,1948);
console.log(names[1]);
console.log(names.length);
上面的代码的输出显示在此
中
我能知道两者之间有什么区别吗?
答案 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。
打印变量name
和names
,您将看到差异。
console.log(name)的输出:"john,mark"
console.log(names)的输出:["john", "mark"]
编辑:原因由@charlietfl提供
答案 2 :(得分:0)
原因:
window.name
实际上,当您使用
var
关键字和name
名称定义变量时>,您正在使用浏览器DOM的window.name
字段。
当您使用name
关键字定义var
时,它不能覆盖string
到window.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