Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么JavaScript是变量;“未定义”;是否从JSON.search()返回?_Javascript_Jquery_Json - Fatal编程技术网

为什么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