javascript 怎么解决变量提升

JavaScript014

javascript 怎么解决变量提升,第1张

“变量提升” 名词是随大流叫法,“变量提升” 改为 “标识符提升” 更准确。

因为变量一般指使用 var 声明的标识符,JS 里使用 function 声明的标识符也存在提升(Hoisting)。

JS 存在变量提升,这个的设计其实是低劣的,或者是语言实现时的一个副作用。它允许变量不声明就可以访问,或声明在后使用在前。

新手对于此则很迷惑,甚至许多使用JS多年老手也比较迷惑。但在 ES6 加入 let/const 后,变量Hoisting 就不存在了。

依次取出来了,剩下的就是按你的要求分别处理了

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML>

<HEAD>

<TITLE>New Document </TITLE>

<META NAME="Generator" CONTENT="EditPlus">

<META NAME="Author" CONTENT="">

<META NAME="Keywords" CONTENT="">

<META NAME="Description" CONTENT="">

</HEAD>

<script>

function a(v){

var lst = []

lst = v.split(',')

for( var i = 0i <lst.lengthi ++ ){

alert(lst[i])

}

}

</script>

<BODY>

<input type="text" onblur="a(this.value)">

</BODY>

</HTML>

js再执行前,会先编译一遍,编译过程中,在后面定义的变量就相当于在前面定义了,这个是js特有的属性,如果不了解,尽量别随便用,很容易赋值时弄错了。ecs6引进了let命令,与传统的var相比,let是局部变量,超过大括号以外就失效,而var则是一旦定义,任何地方都可以使用。其实只要你的代码书写规范。完全可以避免变量混淆,随意声明的问题。