为什么JavaScript是变量;“未定义”;是否从JSON.search()返回?
我有以下代码为什么JavaScript是变量;“未定义”;是否从JSON.search()返回?,javascript,jquery,json,Javascript,Jquery,Json,我有以下代码 function f () { var jsonvar = get (...); console.log (jsonvar); $.ajax({ type: "POST", url: transactUrl, dataType: "xml", success: function (result) { console.log (jsonvar); } }); } function get (
function f () {
var jsonvar = get (...);
console.log (jsonvar);
$.ajax({
type: "POST",
url: transactUrl,
dataType: "xml",
success: function (result) {
console.log (jsonvar);
}
});
}
function get (param) {
return JSON.search (...).toString ();
}
我将得出以下结果:
"someValue"
undefined
但是为什么
jsonvar
在$.ajax()函数中被“遗忘”了呢?未使用JSON定义的变量将具有相同的值。他们之间有什么区别?Javascript的typeof
为它们返回String
。我认为您的代码中的某个地方有错误(可能)导致了“无声错误”。看这把小提琴
这表明设置正在工作,并且变量没有被“遗忘”。尝试添加“use strict”…这可能有助于在调试时抛出有用的错误
function f () {
'use strict';
...
我发现了问题:
ii = "someString";
function f () {
console.log(ii);
var ii = 5;
console.log(ii);
}
f();
给出输出:
undefined
5
因此,在函数内部定义了相同的变量。但这对我来说是新的,我认为变量在第一次定义时会存在。它肯定不应该存在,并且在发布的代码中没有任何东西表明它是delete
d。什么是JSON.search()
?什么是JSON.search
?变量不能“忘记”值,字符串和字符串都不能变异。我怀疑代码是否准确地显示了问题和/或行为。请显示导致“Javascript的typeof返回字符串”的代码。由于这不是typeof
@blgt@epascarello的有效返回值,因此我正在维护代码,因此并非所有内容都清楚,我认为JSON.search
是来自defiant
库。是的,这是由于变量被提升到其作用域的顶部(在本例中是函数)。但这与您的问题中的设置不同。我正要从代码中删除小程序,所以我将.executeCommand()
更改为$.ajax()
。我没有注意到有多个变量定义。这就造成了问题。
undefined
5