gpt4 book ai didi

javascript - 为什么在这种情况下两个同名变量不会发生冲突?

转载 作者:行者123 更新时间:2023-11-30 17:28:22 25 4
gpt4 key购买 nike

我在阅读 typeahead.js documentation 时发现了这段代码:

var states = ['Alabama', 'Alaska'];
//... more code
var states = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
// `states` is an array of state names defined in "The Basics"
local: $.map(states, function(state) { return { value: state }; })
});

我不明白的是,为什么 Bloodhound 对象使用 states 数组,并且它不会与后面的 states 变量声明冲突?

我知道它 shouldn't work 除非它是 nested 。但似乎并非如此。

我做了自己的实验:

var a = 3;
var a = function(){ alert(a + 2); }
a();

输出:function(){ alert(a + 2); }2 这证明它不应该工作。

这是那些 javascript 特性之一吗?

最佳答案

您试图在变量 a 初始化为函数后访问它。如果你尝试类似的东西,

var a = 10;
var a = {b: a+10}

你会看到a是,

{b: 20}

状态数组在被覆盖之前被访问。

关于javascript - 为什么在这种情况下两个同名变量不会发生冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23735007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com