var a = 2; //我们习惯把这条语句当做一条声明 但是js引擎把它当做两条声明. var a; //在编译时执行 同时var a;存在提升 a = 2;//在运行是执行 赋值lhs不会提升 =================================== console.log(a);//undefined var a = 2;
学习JS时候,声明变量是必须的,(虽然在没有声明变量的情况下,对某一变量赋值后, js自动认为已进行声明,但为了严谨,建议还是要进行声明)声明方式有传统的 var a: var b: var c: 也有精简的 ==>var a,b,c: 当需要声明变量且进行赋值时,可以这样 ==>var a =1 :var b = 2 var c: 等价于var a=1,b = 2,c: 注意事项: 1.单独声明时候,虽然“:”不写也没关系,但是为了后面的编程,建议养成每一句结束都带上“:”(分号<英&
function aa(flag) { // var test // 变量提升,函数最顶部 if(flag) { var test = 'hello man' } else { //此处访问 test 值为 undefined console.log(test) } //此处访问 test 值为 undefined } aa(false); //结果 undefined test被声明了 但是没有被赋值 总结: 用var声明变量时,变量提升到函数最顶部或全局最顶部. function aa(fl
由于js声明提前的作用,所以在js中后面定义的函数也可以再前面使用. 不过,项目中看到过这样的写法 var a = function(){}, b = function(){}; 这种写法使代码看上去很整齐. 虽然js对声明可以提前.比如,会对a.b变量的声明提前.但是此时a.b变量并未赋值. 所以,在a中调用b就会出现调用失败. 个人觉得这种写法不值得推广.
JS中常见的三种函数声明(statement)方式有这三种: // 函数表达式(function expression) var h = function () { // h } // 函数声明(function declaration) function h() { // h } // 构造函数(function constructor)function H() { // H } 先说三者的显著区别: 第一种声明方式也就是var声明方式,函数表达式,又叫做函数字面量(Function Lite