当前位置:网站首页>JS function promotion and declaration promotion of VaR variable
JS function promotion and declaration promotion of VaR variable
2022-07-06 12:13:00 【Aboci Bang】
Variable Promotion
// The first 1 topic ~~
var a = 1;
function bar() {
console.log(a);
if (!a) {
var a= 10;
}
console.log(a);
}
bar();
// ask : two console.log() What is the value of .
**// Output :**
undefined
10
// analysis :
Global variable has a, But there is also a function inside a So the global variable a Invalid inside function , because var Declared variables have no block level scope concept therefore if Inside a Promoted to the top of the function And only enhance the declaration part Do not promote the assignment part So the first one console Output the function's internal promotion a But there is no assignment at this point JS Will assign initial values to the variables of life undefined
the second console see if Conditions !a here a yes undefined by false that !a Namely true
Will enter if In scope to a assignment So the second one console Output 10.
There are several concepts to be clear about
var Functional scope But there is no block level scope
Block level scope : Including loop statement and loop body ; Braces for branch statements ; Or just a pair of braces .
Such as :
//(1)
if(true){
var a = 1;
}
//(2)
for(var i=0;i<10;i++){
var a = 1;
}
//(3)
{
var a = 1;
}
All of the above will make var Declared variable promotion .
// The first 2 topic ~~
function fun5(a, b) {
var a;
var b;
console.log(a, b);
}
fun5(1, 2);
~~ Output
1 2
// analysis :
It's stated here a,b In fact, the program automatically declares it to us That is to say, the formal parameter variable and the variable we declare inside the function and do not assign a value are one variable ( The premise is that the variable names should be the same )
Formal parameter variables do not write declarations js It will also help us implicitly declare Artificial manual declaration is actually optional , Mainly to confuse us …
// The first 3 topic ~~
function fun() {
var n1 = n2 = n3 = 1;
}
fun();
console.log(n2, n3);
// Output :
1 1
// analysis :
Here we need to pay attention to :
(1) Not inside the function var Variables declared by keywords are treated as global variables , therefore n2 n3 yes Global variables .
var Next to the back n1 Is the declared local variable .
(2) Assignment operator execution order
n3 = 1; // n3 yes 1
n2 = n3; // n2 yes 1
var n1 = n2; // because n1 Is a local variable, so an external call will show undefined .
Function enhancement
c();
var c=2;
function c(){
console.log(5);
}
c();
answer :
Function enhancement : Before the program is executed , It will promote the function as a whole to the front of the scope , You can call first and then create .
therefore : First line c() Yes, you can call function c Of .
Be careful : The variable name is the same as the function name , Because the function name It is essentially a variable , Saved the function . So the function c It can be written.
var c = function(){
console.log(5);
}
// So the next sentence Namely
var c = 2;
// here c yes 2, It's no longer a method . So the display function is undefined .
a();
function a() {
console.log(111);
}
a();
function a() {
console.log(222);
}
a = function () {
console.log(333); }
a();
The result is :222 222 333
explain : Function expression No promotion ! Because the equal sign is assignment It's not a statement
~~function The first one will improve
a = function () {
console.log(333); }
a();
function a() {
console.log(222);
}
a();
function a() Promoted to the front Function expressions do not promote Then be a=function() covers
var a = 5;
function a() {
console.log(111);
}
console.log('a :>> ', a);
amount to
边栏推荐
- Unit test - unittest framework
- 機器學習--線性回歸(sklearn)
- STM32 如何定位导致发生 hard fault 的代码段
- Custom view puzzle getcolor r.color The color obtained by colorprimary is incorrect
- ESP8266通过arduino IED连接巴法云(TCP创客云)
- Use of lists
- Page performance optimization of video scene
- [golang] leetcode intermediate - fill in the next right node pointer of each node & the k-smallest element in the binary search tree
- Selective sorting and bubble sorting [C language]
- Esp8266 connects to bafayun (TCP maker cloud) through Arduino IED
猜你喜欢
Unit test - unittest framework
Analysis of charging architecture of glory magic 3pro
小天才电话手表 Z3工作原理
AMBA、AHB、APB、AXI的理解
Common properties of location
电商数据分析--薪资预测(线性回归)
[esp32 learning-1] construction of Arduino esp32 development environment
Basic use of pytest
Time slice polling scheduling of RT thread threads
MySQL占用内存过大解决方案
随机推荐
Reno7 60W超级闪充充电架构
基于Redis的分布式ID生成器
列表的使用
Reno7 60W super flash charging architecture
MySQL占用内存过大解决方案
js题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
Basic operations of databases and tables ----- view data tables
js 变量作用域和函数的学习笔记
Pytorch four commonly used optimizer tests
A possible cause and solution of "stuck" main thread of RT thread
History object
Feature of sklearn_ extraction. text. CountVectorizer / TfidVectorizer
uCOS-III 的特点、任务状态、启动
Générateur d'identification distribué basé sur redis
Amba, ahb, APB, Axi Understanding
1081 rational sum (20 points) points add up to total points
Imgcat usage experience
IOT system framework learning
ARM PC=PC+8 最便于理解的阐述
RuntimeError: cuDNN error: CUDNN_STATUS_NOT_INITIALIZED