js里面的var是什么?

JavaScript012

js里面的var是什么?,第1张

js中的var是定义变量的意思,使用和不使用var都能定义变量,但是两个变量的作用域不同。

1、新建html文档,在body标签中添加script标签,使用var定义一个变量a并给变量赋值为1...

2、定义一个demo函数,在函数里面重新使用var定义一个变量a,由于函数外的变量a是全局...

3、将var去掉,直接定义变量a,

区别的话,主要有几个

1:作用域不一样,var是函数作用域,而let是块作用域,也就是说,在函数内声明了var,整个函数内都是有效的,比如说在for循环内定义了一个var变量,实际上其在for循环以外也是可以访问的,而let由于是块作用域,所以如果在块作用域内(比如说for循环内)定义的变量,在其外面是不可被访问的,所以let用在for (let ii <ni++)是一种很推荐的写法

2. let不能在定义之前访问该变量,但是var是可以得。也就是说,let必须是先定义,再使用,而var先使用后声明也行,只不过直接使用但是没有却没有定义的时候,其值为undefined,这块要注意,这一块很容易出问题,这也是个人认为的let比var更好的地方,至于为啥会有这种区别呢,实际上var有一个变量提升的过程。也就是说,当这个函数的作用域被创建的时候,实际上var定义的变量都会被创建,并且如果此时没有初始化的话,则默认会初始化一个undefined。

3. let不能被重新定义,但是var是可以的。这个呢,我个人认为,从规范化的角度来说,是更推荐的,比如说,你在前面声明了一个变量,后来写代码,因为忘了之前的代码逻辑,又声明了一个同名的变量,如果这俩变量逻辑不一样,并且后面都要用的话,很容易出问题,且不容易维护。

总之呢,let从规范化的角度来说,要比var要进步了很大一步。所以一般情况下的话,推荐用let,const这些。当然啦,如果相对var,const和let有更深入的了解,推荐几篇小文章,这样你就会对其相关知识点有更加深入的了解了。Javascript基础之-var

Javascript基础之-var,let和const深入解析(一)

Javascript基础之-var,let和const深入解析(二)

首先说一下js全局变量的作用域:

在js中如果直接定义一个变量,都是在window这个作用域下定义的

比如

var num = 60

也可以写成这样

window.num = 60

这两个写法是完全一样的,不管哪种写法,使用 console.log(num, window.num) 都可以打印出来 num的值

相对于题主的这个例子:

函数内部声明一个局部变量需要 加 var关键字,如果没有 var,根据向上查找原则,就会去方法 f1 上层去查找 num 变量,如果有,直接拿来用,如果没有就会继续再向上层查找,如果到了 window域 下还没找到,这时 就会在 window域 下创建一个 num变量

所以这个例子打印结果是 60

再说这一个例子

f1 中使用 num变量,在方法形参中 已经有一个 num

实际上,在js加载过程中,编译器在编译过程中已经在 f1 中对 num变量 进行了声明,也就是说 num 已经是 f1 作用域下的一个变量了,所以,在函数内再使用 num的时候,就是在使用 f1作用域下的 num变量,而不会再向上层查找