JavaScript doesn’t have block scope
Block doesn’t have scope in javascript, only function has scope.
for(var i = 0; i < 2; i ++) { } i; // 2If you want to create scope, use anonymous function:
(function (){ for(var i = 0; i < 2; i ++) { } })(); typeof(i) === 'undefined'; // trueNaN is weird
NaN indentifies a value which is not a number.
It’s weird because comparing NaN with anything (even NaN itself) is always false.
NaN === NaN; // false
Therefore, the following code may confuse somebody:
parseInt('hello', 10); // NaN parseInt('hello', 10) == NaN; // false parseInt('hello', 10) === NaN; // falseThen, how to check whether a number is NaN or not?
A built-in function can help you, check it:
isNaN(parseInt('hello', 10)); // trueTruthy and falsy values
All values in javascript can be converted into boolean implied.
Note that the following values can be converted into false ones automatically, which called falsy values:
null, undefined, NaN, 0, ‘’, false
Therefore you don’t need to do like this:
if(obj === undefined || obj === null) { }Simply do as follows:
if(!obj) { }How to modify arguments
In this post , I give a method to convert arguments into a real array.
Then, how to modify arguments?
For example, add a new value to the end of the arguments:
function add() { arguments.push('new value'); } add(); // error - arguments.push is not a functionOf course there would be an error, because arguments is not a real array.
Following is the solution:
function add() { Array.prototype.push.call(arguments, 'new value'); return arguments; } add()[0]; // "new value"Boolean and new Boolean
You’d better consider Boolean as a constructor function. It can be used to produce a Boolean literal value:
Boolean(false) === false; // true Boolean('') === false; // trueBoolean(0) is equal to !!0, which was mentioned in this post.
Also, we can use new keyword to produce a boolean object:
new Boolean(false) === false; // false new Boolean(false) == false; // true typeof(new Boolean(false)); // "object" typeof(Boolean(false)); // "boolean"
This is interesting.
随时随地看视频