This paper discusses the difference between the variable declaration in JavaScript and VAR, and the scope of the variable declaration in JS is in function, so we often see that the method of avoiding the global variable pollution is
1 2 3 |
(function () {//...}) (); |
Within a function, variables with Var and no var declarations are not the same. There is a var declaration of local variables, no VAR, declared global variables, so you can use this outward exposure interface Dongdong.
When declaring variables in a global scope, VAR and var all look the same, and we know that the declared global variable, which is the property of window, is the same, and we find the difference by ECMAScrpit5 the attribute query method provided by the property.
1 2 3 4 5 6 7 8 |
var fff = 2; Window.ffa = 3; FFB = 4; THIS.FFC = 4; var ffftx = object.getownpropertydescriptor (window, ' FFF '); configurable:false,enumerable:true,value:2,writable:true var ffatx = object.getownpropertydescriptor (window, ' FFA "); configurable:true,enumerable:true,value:2,writable:true var ffbtx = object.getownpropertydescriptor (window, ' FFB ' ); configurable:true,enumerable:true,value:2,writable:true var ffctx = object.getownpropertydescriptor (window, ' FFC ' ); Configurable:true,enumerable:true,value:2,writable:true |
Through the above, found that there is still a difference, we use delete delete properties to verify that the configuration of false properties can not be deleted. That is, the global object's properties cannot be deleted by variable Var, and we also find that the global object properties created by the function declaration cannot be deleted.
1 2 3 4 |
Delete FFF; Delete FFA cannot be deleted; Delete FFB can be deleted; Delete FFC can be deleted; can delete |
The conclusion is that there is a difference between adding VAR and declaring global variables without var.
It is legal and harmless to use the VAR statement to repeat the declaration statement. If the declaration is repeated and has an assignment, it is not different from the general assignment statement. If you try to read a variable that has not been declared, JS will complain.
Within the function scope of JavaScript, the declared variables or intrinsic functions are visible in the body of the function. means that a function may already be available before it is defined. There are two ways to define a function, one is a function-definition expression, the other is a function declaration statement.
1 2 3 4 5 6 7 8 |
function definition expression var FNS = functions () {//...} ;//Function declaration statement function FNS () {//...} |
A function declaration statement is "advanced" to the top of an external script or external function scope, so a function declared in this manner can be called by code that appears before it is defined. In a function definition expression, the declaration of a variable is advanced, but the assignment to the variable is not advanced, so the function defined in an expression cannot be invoked before the function definition.
1 2 3 4 5 6 7 8 9 10 11-12 |
(function () {testa ();//Print out Testa testb ();//error: Prompt undefined is not a function console.log (TESTC);//undefined, if you move to the top can function Testa () {Console.log ("testa"); var testb = function () {Console.log ("Tesb"); var TESTC = "TESTC"; })(); |
Of course, we declare variables and functions that must conform to basic specifications, variables and function declarations to advance.