Javascript 基础(一)

1. Javascript实现由三部分组成:

  • 核心:ECMAScript
  • 文档对象模型DOM
  • 浏览器对象模型BOM

2. ECMAScript数据类型:

  • 基本类型值:

    • Undefined、Null、Number、Boolean、String
  • 引用类型值:

    • Object

3. Javascript 没有块级作用域,只有全局作用域和函数作用域,在if和for中有明显体现,在ES6新增了块级作用域

for(var i=0;i<10;i++){
    doSomething(i);
  }
  alert(i); //10

4. 声明变量会自动添加到最近的环境中,比如在函数内,最接近的环境就是函数的局部环境。另外函数声明在es5中只能在顶层作用域中或者函数作用域中,不能在块级作用域中,而在es6中是被允许的。所以在块级作用域中不论是声明变量(var,let)还是函数(function)将会被提升出块级作用域,添加到最近的局部环境(函数作用域或全局)

ES5

function f() { console.log('I am outside!'); }

(function () {
  if (false) {
    // 重复声明一次函数f
    function f() { console.log('I am inside!'); }
    //在es5中块作用域中声明函数是会报错的
    //Uncaught TypeError: f is not a function
  }
  f();
}());

上面的代码在ES6中同样会报错,实际运行的是下面的代码

function f() { console.log('I am outside!'); }
(function () {
  var f = undefined;
  if (false) {
    function f() { console.log('I am inside!'); }
  }

  f();// Uncaught TypeError: f is not a function
}());
es6中块作用域声明函数后提升到最近的作用域中既(function(){})(),同样会报错

上面同样的代码转化为ES6(可以通过babel)相当于下面的代码

function f() { console.log('I am outside!'); }

(function () {
  if (false) {
    // 重复声明一次函数f
    var _f = function _f() {
      console.log('I am inside!');
    };
  }

  f();  //I am outside!
})();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值