检查变量jQuery的最佳方法

时间:2015-07-03 13:23:15

标签: javascript jquery

我有一个脚本,检查变量是否设置或等于'否'。如果它等于no或未设置,则将var定义为“yes”。

这是我的代码

if (typeof progress == 'undefined' || progress == 'no') { 
document.getElementById('button-play').onclick = null;
var progress = 'yes';

然后调用一个函数,将变量覆盖为no。

function enableButton(){
var progress = 'no';
document.getElementById('button-play').onclick = play();
}

第一次执行脚本并且进度未定义时,脚本工作,并且将进度覆盖为'no',但是当我尝试再次运行脚本并将var progress定义为'no'时,它不起作用。

我是否正确检查进度值?

添加了jsfiddle:https://jsfiddle.net/zxxubopq/

4 个答案:

答案 0 :(得分:2)

Javascript中的scope全局功能。如果您在function中定义变量,则该变量仅限于function

这不会覆盖变量,它是progress范围内的另一个本地enableButton()变量。你应该修复你的范围,它会起作用。

评论后编辑:

document.getElementById('button-play').onclick = play();

实际上是错误的,因为您要将函数分配给onclick,而不是返回值,因此您实际需要:

document.getElementById('button-play').onclick = play;

请记住,JavaScript函数是一流的函数,因此它们可以像任何其他对象一样对待。

答案 1 :(得分:2)

函数内的var使变量progress成为本地变量。因此,对局部变量的任何更改都不适用于全局变量。

答案 2 :(得分:1)

function enableButton(){
  var progress = 'no';
}

这行代码在函数内部创建了新的变量var progress。因此,当函数退出时,此变量将被删除。

尝试将其更改为:

function enableButton(){
    progress = 'no';
}

答案 3 :(得分:0)

声明变量'进展'外面的两个功能都在开始。