The page I am working on has a javascript function executed to print parts of the page. For some reason, printing in Safari, causes the window to somehow update. I say somehow, because it does not really refresh as in reload the page, but rather it starts the "rendering" of the page from start, i.e. scroll to top, flash animations start from 0, and so forth. The effect is reproduced by this fiddle: http://jsfiddle.net/fYmnB/ Clicking the print button and finishing or cancelling a print in Safari causes the screen to "go white" for a sec, which in my real website manifests itself as something "like" a reload. While running print button with, let's say, Firefox, just opens and closes the print dialogue without affecting the fiddle page in any way. Is there something with my way of calling the browsers print method that causes this, or how can it be explained - and preferably, avoided? P.S.: On my real site the same occurs with Chrome. In the ex
I think there is no specific reason/difference except for the precedence as you said. Programmers are more used to using && instead of and as this is the case in most programming languages. The and and or is more readable and human than && and || but this should not be a problem for programmers. I don't see any particular reason why they are using and and or for their project. I am not sure but there may be something with the speed meaning && and || might be faster than their other counter-parts. Interestingly, this is the case with CodeIgniter (PHP framework) too.
ReplyDeleteIf you use AND and OR, you'll eventually get tripped up by something like this:
ReplyDelete$this = true;
$that = false;
$truthiness = $this and $that;
Want to guess what $truthiness equals?
If you said false... bzzzt, sorry, wrong!
$truthiness above has the value true. Why? = has a higher precedence than and. The addition of parentheses to show the implicit order makes this clearer:
($truthiness = $this) and $that
If you used && instead of and in the first code example, it would work as expected and be false.
Depending on how it's being used, it might be necessary and even handy.
ReplyDeletehttp://php.net/manual/en/language.operators.logical.php
// "||" has a greater precedence than "or"
// The result of the expression (false || true) is assigned to $e
// Acts like: ($e = (false || true))
$e = false || true;
// The constant false is assigned to $f and then true is ignored
// Acts like: (($f = false) or true)
$f = false or true;
But in most cases it seems like more of a developer taste thing, like every occurrence of this that I've seen in CodeIgniter framework like @Sarfraz has mentioned.
I guess it's a matter of taste, although (mistakenly) mixing them up might cause some undesired behaviors:
ReplyDeletetrue && false || false; // returns false
true and false || false; // returns true
Hence, using && and || is safer for they have the highest precedence. In what regards to readability, I'd say these operators are universal enough.
which version are you using?
ReplyDeleteIf the coding standards for the particular codebase I am writing code for specifies which operator should be used, I'll definitely use that. If not, and the code dictates which should be used (not often, can be easily worked around) then I'll use that. Otherwise, probably &&.
Is 'and' more readable than '&&'?
Is it more readable to you. The answer is yes and no depending on many factors including the code around the operator and indeed the person reading it!
|| there is ~ difference?
Yes. See logical operators for || and bitwise operators for ~.
Normally The people who are as Microsoft(VB and .Net) developers always use "AND" and "OR" since it those languages need not to be a Case Sensitive, But the people who are in C, C++, PHP, JAVA are always used "&&" and "||" since those languages are Case Sensitive.
ReplyDeleteThis is what my taught...
I don't know if there's a precedence difference between && and AND but I really believe that && is faster than AND since it's more "machine language" than AND and lots of other languages don't accept AND or OR logical operators.
ReplyDelete