JavaScript中变量声明有var和没var的区别示例介绍
来源:互联网 发布:g92车多头螺纹编程 编辑:程序博客网 时间:2024/05/16 09:51
http://www.jb51.net/article/55200.htm
本文来论述JavaScript中变量声明有var和没var的区别,关于Js中的变量声明的作用域是以函数为单位,所以我们经常见到避免全局变量污染的方法是
(
function
(){
// ...
})();
在函数内部,有var和没var声明的变量是不一样的。有var声明的是局部变量,没var的,声明的全局变量,所以可以借此向外暴露接口东东。
在全局作用域内声明变量时,有var 和没var看起来都一样,我们知道,声明的全局变量,就是window的属性,究竟是否一样,我们通过ECMAScrpit5提供的属性的特性查询方法,来发现之间的区别。
var
fff = 2;
window.ffa = 3;
ffb = 4;
this
.ffc = 4;
var
ffftx = Object.getOwnPropertyDescriptor(window,
'fff'
);
//configurable:false,enumerable:true,value:2,writable:true
var
ffatx = Object.getOwnPropertyDescriptor(window,
'ffa'
);
//configurable:true,enumerable:true,value:2,writable:true
var
ffbtx = Object.getOwnPropertyDescriptor(window,
'ffb'
);
//configurable:true,enumerable:true,value:2,writable:true
var
ffctx = Object.getOwnPropertyDescriptor(window,
'ffc'
);
//configurable:true,enumerable:true,value:2,writable:true
通过上面,发现,原来还是有差别的,我们再用delete删除属性来验证下,配置性为false的属性无法删除。也就是通过变量var声明全局对象的属性无法删除,我们还会发现和函数声明创建的全局对象属性也无法删除。
delete
fff;
// 无法删除
delete
ffa;
// 可删除
delete
ffb;
// 可删除
delete
ffc;
// 可删除
结论就是,加上var 和没加 var的声明全局变量是有区别的。
使用var语句重复声明语句是合法且无害的。如果重复声明且带有赋值,那么就和一般的赋值语句没差别。如果尝试读取没有声明过的变量,Js会报错。
JavaScript的函数作用域内,声明的变量或内部函数,在函数体内都是可见的。意味着,函数在定义之前可能已经可用。函数定义有两种方式,一种是函数定义表达式,一种是函数声明语句。
// 函数定义表达式
var
fns =
function
(){
// ...
};
// 函数声明语句
function
fns(){
// ...
}
函数声明语句“被提前”到外部脚本或外部函数作用域的顶部,所以以这种方式声明的函数,可以被再它定义之前出现的代码所调用。而函数定义表达式中,变量的声明被提前了,但是给变量的赋值是不会提前的,所以,以表达式方式定义的函数在函数定义之前无法调用。
(
function
() {
testa();
// 打印出testa
testb();
// 报错:提示undefined is not a function
console.log(testc);
//undefined,如果移到上面就可以了
function
testa() {
console.log(
"testa"
);
}
var
testb =
function
() {
console.log(
"tesb"
);
}
var
testc =
"testc"
;
})();
当然,我们声明变量和函数,必须遵守基本的规范,变量和函数声明要提前。
- JavaScript中变量声明有var和没var的区别示例介绍
- JavaScript中变量声明有var和没var的区别
- JavaScript中声明变量时 带var和不带var的区别
- javascript变量声明有误var的区别
- js中 声明变量时: var $i 和 var i 有什么区别吗 各自是什么意思
- js中var声明和不加var的区别
- javascript定义变量时,有var和没有var的区别
- javascript var声明变量与不声明的区别
- JavaScript中let和var定义变量的区别
- JavaScript中定义变量加var和不加var的区别
- javaScript中使用var和不是用var定义变量的区别
- JavaScript中声明变量有无var
- 在Javascript中 声明时用"var"与不用"var"的区别,== 和 ===的区别
- Javascript- 声明变量时用"var"与不用"var"的区别
- javascript中必须使用var声明局部变量的情况
- javascript声明变量var和this的总结
- javascript声明变量var和this的总结
- 浅谈 JavaScript 中定义变量时有无 var 声明的区别
- Java多线程学习(吐血超详细总结)
- Firebug快捷键
- cygwin中使用cmake命令
- Java学习笔记11——Struts2框架
- 如何优雅的选择字体(font-family)
- JavaScript中变量声明有var和没var的区别示例介绍
- selenium 时间日期控件的处理
- Quartz定时调度器
- Java适配器模式
- NKOJ-4189 信与信封的问题<反向建图>
- C# 截取字符串
- 优悦家装发送消息流程
- scanf和scanf_s
- 修复IE主页被篡改劫持的方法之一:自定义xxx.reg文件