js中定义变量问题,请问定义变量时有var关键字和没有var关键字有什么差别?

2024-11-17 08:20:29
推荐回答(4个)
回答(1):

1.在函数作用域内 加var定义的变量是局部变量,不加var定义的就成了全局变量。
使用var定义
var a = 'hello World';
function bb(){
var a = 'hello Bill';
console.log(a);
}
bb() // 'hello Bill'
console.log(a); // 'hello world'

不使用var定义
var e = 'hello world';
function cc(){
e = 'hello Bill';
console.log(e); // 'hello Bill'
}
cc() // 'hello Bill'
console.log(e) // 'hello Bill'

2.在全局作用域下,使用var定义的变量不可以delete,没有var 定义的变量可以delete.也就说明隐含全局变量严格来说不是真正的变量,而是全局对象的属性,因为属性可以通过delete删除,而变量不可以。
3.使用var 定义变量还会提升变量声明,即
使用var定义:
function hh(){
console.log(a);
var a = 'hello world';
}
hh() //undefined

不使用var定义:
function hh(){
console.log(a);
a = 'hello world';
}
hh() // 'a is not defined'

这就是使用var定义的变量的声明提前。
4.在ES5的'use strict'模式下,如果变量没有使用var定义,就会报错。

回答(2):

avascript声明变量的时候,虽然用var关键字声明和不用关键字声明,很多时候运行并没有问题,但是这两种方式还是有区别的。可以正常运行的代码并不代表是合适的代码。
JS中变量申明分显式申明和隐式申明。
Var i=100 显示申明
i=100 隐式申明
在函数中使用var关键字进行显式申明的变量是做为局部变量,而没有用var关键字,使用直接赋值方式声明的是全局变量。
当我们使用访问一个没有声明的变量时,JS会报错。而当我们给一个没有声明的变量赋值时,JS不会报错,相反它会认为我们是要隐式申明一个全局变量。
var num = 1是在当前域中声明变量. 如果在方法中声明,则为局部变量;如果是在全局域中声明,则为全局变量。
而num = 1,事实上是对属性赋值操作。

回答(3):

在方法外面没什么区别,在方法里面的话没有就是默认全局变量,有就是作用域只在这个方法内

比如

回答(4):

有的话应用于作用域
没有的话默认为全局变量