Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.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 如何访问定义变量的函数之外的变量?_Javascript_Jquery - Fatal编程技术网

Javascript 如何访问定义变量的函数之外的变量?

Javascript 如何访问定义变量的函数之外的变量?,javascript,jquery,Javascript,Jquery,我似乎无法使用jQuery click函数中定义的变量。我知道全局变量和局部变量之间的区别,但是在函数外部创建变量似乎没有帮助 var $genre; $('#search').click(function() { $genre = $(this).attr('value'); }); console.log($genre); 必须有一些我没有想到的简单解决方案。JS中只有两个值范围:函数和全局 这意味着该值位于.click回调中,并且仅在单击后才存在。Undefined实际上是JS中

我似乎无法使用jQuery click函数中定义的变量。我知道全局变量和局部变量之间的区别,但是在函数外部创建变量似乎没有帮助

var $genre;
$('#search').click(function() {
    $genre = $(this).attr('value');
});
console.log($genre);

必须有一些我没有想到的简单解决方案。

JS中只有两个值范围:函数和全局

这意味着该值位于.click回调中,并且仅在单击后才存在。Undefined实际上是JS中的一个类型,表示变量存在但尚未赋值


我怀疑您认为代码将同步执行,但函数click只会在以下情况下调用。。。单击

您正在单击事件中分配“值”。因此,仅当您单击“#搜索”时才会指定该值。因此console.log语句将没有任何值

相反,试试这个

var $genre;
$('#search').click(function() {
    $genre = $(this).attr('value');
    console.log($genre);
});
  • 代码实际上正是您想要处理变量的操作,但是在函数中,您没有将其记录到控制台
  • 我注意到的一点是,您还可以使用$(this.attr('value')访问“value”属性。如果您试图获取一个输入的值,这就是我假设的原始意图
下面是我提到的进行这两项更改的代码

var $genre;

$('#search').click(function() {
    //sets the variable to the value of the input
    $genre = $(this).val();

    //prints the variable to the console everytime that the element is clicked
    console.log($genre);
});

因为它是在点击事件中设置的,所以在触发点击事件之前它不会有值……您是否在另一个函数/处理程序中使用
console.log
?因为您现在的操作方式意味着当点击处理程序被触发时,
console.log
将不会被执行。它只会打印
undefined
您正在尝试在比萨饼交付之前吃比萨饼!是,记录变量直到单击。。。您将看到值“JS:Function和Global中只有2个值作用域”,这是错误的。还有一个块范围。Noup,let关键字是一个修复,因为JS中从来没有块作用域。它也仅在EC6中实现几乎是IIFE被用作年的事实块替代物的原因……”let声明的变量将定义它们的块作为其作用域“块作用域”。