如题所述
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å®ä¹ï¼å°±ä¼æ¥éã
使ç¨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å®ä¹ï¼å°±ä¼æ¥éã
温馨提示:答案为网友推荐,仅供参考
第1个回答 2018-07-31
avascript声明变量的时候,虽然用var关键字声明和不用关键字声明,很多时候运行并没有问题,但是这两种方式还是有区别的。可以正常运行的代码并不代表是合适的代码。
JS中变量申明分显式申明和隐式申明。
Var i=100 显示申明
i=100 隐式申明
在函数中使用var关键字进行显式申明的变量是做为局部变量,而没有用var关键字,使用直接赋值方式声明的是全局变量。
当我们使用访问一个没有声明的变量时,JS会报错。而当我们给一个没有声明的变量赋值时,JS不会报错,相反它会认为我们是要隐式申明一个全局变量。
var num = 1是在当前域中声明变量. 如果在方法中声明,则为局部变量;如果是在全局域中声明,则为全局变量。
而num = 1,事实上是对属性赋值操作。本回答被网友采纳
JS中变量申明分显式申明和隐式申明。
Var i=100 显示申明
i=100 隐式申明
在函数中使用var关键字进行显式申明的变量是做为局部变量,而没有用var关键字,使用直接赋值方式声明的是全局变量。
当我们使用访问一个没有声明的变量时,JS会报错。而当我们给一个没有声明的变量赋值时,JS不会报错,相反它会认为我们是要隐式申明一个全局变量。
var num = 1是在当前域中声明变量. 如果在方法中声明,则为局部变量;如果是在全局域中声明,则为全局变量。
而num = 1,事实上是对属性赋值操作。本回答被网友采纳
第2个回答 推荐于2017-10-11
在方法外面没什么区别,在方法里面的话没有就是默认全局变量,有就是作用域只在这个方法内
比如
<script>var a=1;
b=2;
function a(){
c=3;
var d=4;
}
alert(a);
alert(b);
alert(c);
alert(d);//这个就会报错,因为它不是全局变量
</script>本回答被提问者采纳
第3个回答 2014-01-14
有的话应用于作用域
没有的话默认为全局变量
没有的话默认为全局变量