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