JavaScript变量名称冲突

时间:2018-08-25 15:55:27

标签: javascript

var name = document.querySelectorAll('.info input[type=text]');
var name1 = document.querySelectorAll('.info input[type=text]');

console.log(name);
console.log(name1);
            <div class='info'>
                <div>
                    <div><label id="dd">Name</label><input type='text'></div>
                    <div><label>Father Name</label><input type='text'></div>
                
                </div>
            </div>

javascript对于相同的代码产生不同的结果,只是变量名不同。 this is the output produced on my device

3 个答案:

答案 0 :(得分:4)

要打印的name对象上有一个名为window的属性:

var name2 = document.querySelectorAll('.info input[type=text]');
var name1 = document.querySelectorAll('.info input[type=text]');

console.log(name === window.name);
console.log(name2);
console.log(name1);
            <div class='info'>
                <div>
                    <div><label id="dd">Name</label><input type='text'></div>
                    <div><label>Father Name</label><input type='text'></div>
                
                </div>
            </div>

答案 1 :(得分:2)

问题与window.name有关:https://developer.mozilla.org/en-US/docs/Web/API/Window/name

在顶部作用域中,您正在修改window.name而不是创建新的var。 window.name被转换为字符串,这就是为什么它记录了一些不同的原因。您需要将该代码包装在函数中或使用其他变量名称。

答案 2 :(得分:1)

let [ name1, name2 ] = document.querySelectorAll('.info input[type=text]');

<div class='info'>
   <div>
     <div><label id="dd">Name</label><input type='text'></div>
     <div><label>Father Name</label><input type='text'></div>       
   /div>
</div>

请尝试使用变量而不是name,因为这可能与window.name发生冲突,只有在您的根范围内使用此变量时,这才会发生冲突。请改用模块化方法。为了避免此类错误。