Javascript中变量声明与var和var之间的差异的一个示例

本文讨论了Javascript和var之间变量声明的区别,JS中的变量声明是基于函数的,所以我们经常看到避免全局变量污染的方法是Js。


(函数(){())
/ /…
});


在函数中,有var和无var声明的变量是不同的,有一个var声明,它是一个局部变量,没有var,一个声明的全局变量,所以可以将接口暴露给东方。

当我们在全局作用域中声明变量时,它看起来与var和var相同,我们知道声明的全局变量是窗口的属性。无论我们是否相同,我们发现属性查询提供的方法ecmascrpit5之间的差异。


VaR FFF = 2;
window.ffa = 3;
FFB = 4;
this.ffc = 4;
无功ffftx = object.getownpropertydescriptor(窗口,'fff '); / /配置:虚假,枚举:真的,价值:2、可写:真的
无功ffatx = object.getownpropertydescriptor(窗口,'ffa '); / /配置:真的,真的,可枚举:价值:2、可写:真的
无功ffbtx = object.getownpropertydescriptor(窗口,'ffb '); / /配置:真的,真的,可枚举:价值:2、可写:真的
无功ffctx = object.getownpropertydescriptor(窗口,'ffc '); / /配置:真的,真的,可枚举:价值:2、可写:真的


通过上面的介绍,发现原来还有一个区别,我们使用删除性能验证的虚假性质无法删除配置,全局对象的属性不能被删除,通过变量,我们还发现,全局对象的属性的函数声明创建不能删除。


删除FFF; / /不能被删除
删除FFA;删除
删除FFB; / /删除
删除FFC; / /删除


得出的结论是var与不添加var的全局变量的声明之间存在差异。

使用var语句重复声明语句是合法且无害的。如果语句重复且有赋值,它与一般赋值语句不一样。如果您试图读取未声明的变量,js会出错。

在Javascript的功能范围内,声明变量或内部函数在函数中是可见的,这意味着函数在定义之前可能可用,函数定义有两种方式,一种是函数定义表达式,另一种是函数声明语句。


表达式/函数定义
VaR FNS =函数(){()
/ /…
};
函数语句
功能FNS(){

}


函数声明是先进的外部脚本或外部作用范围的顶部,所以函数声明这样可以被编码之前,它的定义,功能定义的表达,声明变量是先进的,但对变量赋值不提前,所以定义的表达功能不能调用之前调用函数的定义。


(函数(){())
特斯塔(种皮); / /打印
(叫); / /错误:未定义的是不是一个函数
console.log(变迁); / /不确定的,如果你移动它,你可以
功能:(){
console.log(种);
}
叫(){ var =功能()
console.log(tesB );
}
VaR变迁=变迁;
});


当然,我们声明变量和函数,我们必须遵守基本的规范,变量和函数的声明应该提前。