标签:
一、概念
1、变量声明
在JavaScript中,变量一般通过var关键字(隐式声明,let关键字声明除外)进行声明,如下通过var关键字声明a,b,c三个变量(并给其中的a赋值):
var a=1,b,c; //关键字显式声明变量a,b,c,并给a赋值
console.log(a); //1
//由于b,c未定义变量类型,因此输出"undefined"
console.log(b); //undefined
console.log(c); //undefined
//如果变量未声明,则输出未声明的报错信息
console.log(d); //Uncaught ReferenceError: d is not defined(…)
2、函数声明
在JavaScript中,函数一般直接通过关键字function进行声明(匿名函数除外)。如下通过function关键字声明一个a函数:
function a(){ //....... }
console.log(a); //function a(){ //...... }
二、区别
在JavaScript的执行机制中(预编译阶段),变量声明和函数声明是存在优先级的,函数声明的优先级大于变量声明。若同时声明一个函数和变量,函数名称和变量名称相同,则声明的变量无效,通过typeof我们可以看到,无论声明先后顺序,如果声明同名的函数和变量,则只有声明的函数有效,而声明的变量无效(相当于同名的函数覆盖了变量)。如下代码所示:
var a; function a() { //...... } alert(typeof a); //function //声明顺序调过来也是一样的结果 function a() { //...... } var a; alert(typeof a); //function,相当于声明的变量a被函数a覆盖了
//如果在上述情况下(javascript预编译阶段),直接给变量a赋值,则有以下结果
function a() {
//......
}
var a = 1;
alert(typeof a); //number,这是因为这时候javascript进入了代码解释执行阶段。变量a被赋值了数值1,所以输出为number类型
三、参考资料
关于Javascript中通过var关键字声明变量和function关键字声明函数的笔记
标签:
原文地址:http://www.cnblogs.com/sinstone/p/5135271.html