JS学习笔记1

 

1 变量提升:将var web;提到最前面执行,无论其所在语句是否执行,在一开始便会预执行声明变量部分(不预执行所在语句的赋值部分)

 function hd() {
   if (false) {
      var web = "houdunren.com";
   }
   console.log(web);
 }
 hd();

即使if(false)语句并未执行,仍可在console中打出web为undefined类型,证明var web;语句被提前执行

2 let/const暂时性死区TDC:使用let/const声明变量,必须在声明后再使用此变量,先使用后声明会报错。建议用let/const替代var声明。

3 var let const的相同点:

var/let/const变量在全局声明且赋值过后,在私有区域再次声明并赋值可改变私有领域此变量的值,不改变全局变量的值,若在私有领域未再次声明,直接赋值,改变的是全局变量。 

4 变量必须声明,否则易造成全局污染。

5 块作用域:在块作用域中使用let/const,使用var时需建立函数作用域来隔绝私有领域与全局领域

var无法隔绝块作用域,会改变全局变量的值,换成let便可(但var可重复定义,let/const不可以)

调用js时,若声明变量用var,需建立一个执行函数来隔绝私有领域和全局领域,形成一个函数作用域,在私有领域里面用var声明的变量是无法访问到的,需使用bind.window()进行调用,此时使用作用域中为url开发的接口$.getUrl()才可访问到url的值

(function() {
  var $ = (window.$ = {});
  $.web = "hdcms";
  var url = "hdcms.com";
  var site = "后盾人";
  $.getUrl = function() {
    return url;
  };
}.bind(window)());

若用let声明变量,则可直接用花括号建立块作用域,但同样也要使用$.getUrl()来访问url的值

{
    let $ = (window.$ = {});
    $.web = "hdcms";
    let url = "hdcms.com";
    let site = "后盾人";
    $.getUrl = function() {
      return url;
    };
  }

6 const常量声明:所声明的变量在同个作用域中不可更改(let可以更改),若想更改其值,需建立函数作用域将其私有化,在作用域内可拥有新的值

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值