Home > Article > Web Front-end > The difference between using "var" and not using "var" when declaring in Javascript_Basic knowledge
When declaring variables in Javascript, although there is no problem in running with the var keyword or without the keyword, there is still a difference between the two methods. Just because code works doesn't mean it's good code.
var num = 1;
declares a variable in the current domain. If it is declared in a method, it is a local variable; if it is declared in the global domain, it is a global variable.
and num = 1;
In fact, it is an attribute assignment operation. First it tries to resolve num in the current scope chain (if declared in a method, the current scope chain represents the global scope and method local scope etc...); if num is found in any current scope chain , then assignment to the num attribute will be performed; if num is not found, it will create the num attribute in the global object (that is, the top-level object of the current scope chain, such as the window object) and assign a value.
Attention! It does not declare a global variable, but creates a property of the global object.
Even so, it may still be difficult for you to understand the difference between "variable declaration" and "creating object properties" here. In fact, Javascript's variable declaration, creation of attributes, and each attribute in each Javascript have certain signs to describe their attributes - such as read-only (ReadOnly), non-enumerable (DontEnum), non-deletable (DontDelete), etc. wait.
Since the variable declaration has the non-deletable attribute, compare var num = 1 with num = 1. The former is a variable declaration with the non-deletable attribute, so it cannot be deleted; the latter is an attribute of the global variable, so it can be deleted from the global variable. Delete from the variable.
See the following code for details:
var num1 = 1;
num2 = 2;
// delete num1; Can not delete
// delete num2;function model(){
var num1 = 1; // Local variable
num2 = 2; // Attributes of window
// Anonymous function
(function(){var num = 1; // Local variable
num1 = 2;
num3 = 3; // Attributes of window
}
}PS. In the ECMAScript5 standard, there is a "Strict Mode". In strict mode, assigning a value to an undeclared identifier will throw a reference error, thus preventing accidental creation of global variable attributes. Currently, new versions of some browsers already support it.