Search code examples
javascriptif-statementconditional-statementsassignment-operator

What is the use of = sign (single) in a condition?


I had read in some articles that in some languages, like in JavaScript, assignment operators can be used in conditional statements. I want to know what is the logic behind that operation? As far as I know, only comparison operators are allowed in condition checking statements.


Solution

  • Any expression is allowed in a condition checking statement. If the value of the expression isn't boolean, then it will be converted to boolean to determine what the statement should do.

    You can for example use a number in an if statement:

    if (1) { ... }
    

    Any non-zero number will be converted to true.

    In Javascript an assignment is also an expression, i.e. it has a value. The value of the expression is the same value that was assigned to the variable.

    So, you can use an assignment expression in a condition checking statement, and the value of the expression is converted to boolean if needed:

    if (x = 1) { ... }
    

    Using an assignment in an condition checking statement can be useful, if the value that you assign should be used to control what happens. If you for example have a function that returns different values for the first calls, then a null when there are no more values, you can use that in a loop:

    while (line = getLine()) {
      document.write(line);
    }
    

    You can of couse do that with the assignment separated from the logic, but then the code gets more complicated:

    while (true) {
      line = getLine();
      if (line == null) break;
      document.write(line);
    }