Javascript difference between "=" and "==="

This question already has an answer here:

  • Difference between == and === in JavaScript [duplicate] 2 answers

  • You need to use == or === for equality checking. = is the assignment operator.

    You can read about assignment operators here on MDN.


    I assume you know that = is for assignment, after all, you are using assignment already in the first line:

    var testTest = function(answer) {
    

    and I don't think you think that this would compare anything here (or do you?).

    The question remains though, why does = in if (answer = "doggies") "not work"?

    An assignment is an expression. The result of that expression is the value that was assigned. Here, the result of answer = "doggies" is "doggies" , ie you essentially running if ("doggies") .

    JavaScript performs type coercion . That means it automatically converts values of one data type to values of a different data type if necessary, according to specific rules.

    The condition of an if statement has to resolve to a Boolean value. But here you are using a string value as condition. The String -> Boolean conversion rules are pretty simple:

  • The empty string converts to false .
  • A non-empty string converts to true .
  • So, after type conversion, the statement is equivalent to if (true) , hence it will always execute the first block, never the else block.


    作为您学习JS的快速参考:

    =   assignment operator
    ==  equal to
    === equal value and equal type
    
    !=  not equal
    !== not equal value or not equal type
    
    链接地址: http://www.djcxy.com/p/19442.html

    上一篇: Javascript如果其他速记

    下一篇: “=”和“===”之间的Javascript差异