什么是“!”在JavaScript中的`state =!state;`表示

时间:2014-12-12 04:14:24

标签: javascript jquery

你好我有两个问题我从jQuery UI网站上提取了这个脚本,这里是完整代码的链接http://jqueryui.com/animate/

1)var = state的目的是什么?你能在if语句中使用boolean true吗?

2)在if / else语句之后,您可以看到var =!state。这是什么目的,什么是!意思?

<script>
  $(function() {
    var state = true;
    $( "#button" ).click(function() {
      if ( state ) {
        $( "#effect" ).animate({
          backgroundColor: "#aa0000",
          color: "#fff",
          width: 500
        }, 1000 );
      } else {
        $( "#effect" ).animate({
          backgroundColor: "#fff",
          color: "#000",
          width: 240
        }, 1000 );
      }
      state = !state;
    });
  });
  </script>

4 个答案:

答案 0 :(得分:3)

这意味着'不'。如果x = !false,则x为真。如果x = !true,则x为false。

答案 1 :(得分:3)

布尔值中javascript中的not(!)运算符切换bool值truefalse之间的状态,所以:

state = !state;

的效果是,如果state为true,则现在为false,反之亦然。回答你的第一个问题:

var state = true;

表示初始state从true开始。像state这样的Javascript变量是可变的,并且状态值将根据上面的切换进行更改,每次单击按钮都会触发该切换。

将所有内容放在一起,并附上评论:

// Set the initial visual state
var state = true;
// jQuery handler for each button click
$( "#button" ).click(function() {
  if ( state ) {
    // Visual effects when state is true
  } else {
    // Visual effects when state is false
  }
  // Now change the visual state, (which will be applied in the next click)
  state = !state;
});

有趣的是,只有在应用新的可视状态后才会更改状态,这意味着显示更新lags状态。

答案 2 :(得分:0)

它只是意味着“不”。以下是您使用它的原因的几个例子:

function check() {

  if (!document.getElementById('text').value) {
    // if the input is empty, (NOT have a value) then alert the user
    alert('You did not enter text.');
  }
}
<input type="text" id="text" />
<button onclick="check()">Check if the input is emtpy.</button>

function check(){
  
  if (document.getElementById('number').value != 22){
    // != is the opposite of ==
    alert('Yay!  You didn\'t pick number 22!');
    }
  
  }
Please don't enter the number 22:
<input type="number" id="number" />
<button onclick="check()">Check number</button>

答案 3 :(得分:0)

1)

var state=true 

是一个最初保持为true的变量,所以当click函数执行时,如果block将执行,后者on state转换为reverse值,即如果为true,则反之亦然。 不,你不能使用布尔值true,因为在这种情况下总是如果块执行。

2)布尔值中javascript中的not(!)运算符切换bool值true和false之间的状态,