let,const,let和use strict

一.let,const和let的区别?

1.var定义的变量,没有块的概念,可以跨块访问, 不能跨函数访问。


2.let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问。


3.const用来定义常量,使用时必须初始化(即必须赋值),只能在块作用域里访问,而且

不能修改

二.严格模式('use strict')

1)'use strict'是JavaScript的严格模式

2)判断浏览器是否支持严格模式:

var hasStrictMode=(function(){“usestrict”;return this===unsefined;}());

3)在严格模式中禁止使用with语句

4)在严格模式中,所有变量要先声明,否则catch从句参数或全局对象的书zing赋值,

将会throw一个引用错误(在非严格模式下,这种隐式声明的全局变量的方法是给全局

对象添加一个新属性)

5)在严格模式中,调用的函数(不是方法)中的一个this值是undefined.(在非严格模

式下,调用函数中的this值总是全局对象)。可以利用这种特性来判断js实现是否支持严

格模式。

6)同样,在严格模式中,当通关过call()或apply()来调用函数时,其中的this值就是

call()或apply()传入的第一个参数(在非严格模式下,Null和undefined值被全局对象和

转换为对象的非对象值所代替)

7)在严格模式下,给只读属性赋值和给不可扩展的对象创建新成员都将抛出一个类型

错误异常(在非严格模式下,这些操作只是简单的操作失败,不会抛错)

8)在严格模式下,传入eval_r()的代码不能在调用程序所在的上下文中声明变量或定义

函数,二在非严格模式中可以这样的。姓范,变量和函数定义是在eval_r()创建的新作

用于中,这个作用域在eval_r()返回就弃用了。

三.let和var关键字的异同实例

1)声明后未赋值,表现相同:

‘use strict’;

(function() {
    var varTest;
    let letTest;
    console.log(varTest); //输出undefined
    console.log(letTest); //输出undefined
}());

2)使用未声明的变量,表现不同:

(function() {
    console.log(varTest); //输出undefined(注意要注释掉下面一行才能运行)
    console.log(letTest); //直接报错:ReferenceError: letTest is not defined

    var varTest = ‘test var OK.’;
    let letTest = ‘test let OK.’;
}());

3)重复声明同一个变量是,表现不同:

‘use strict’;

(function() {
    var varTest = ‘test var OK.’;
    let letTest = ‘test let OK.’;

    var varTest = ‘varTest changed.’;

    //直接报错:SyntaxError: Identifier ‘letTest’ has already been declared
    let letTest = ‘letTest changed.’;

     
    //输出varTest changed.(注意要注释掉上面letTest变量的重复声明才能运行)
    console.log(varTest); 

    console.log(letTest);
}());

4)变量作用范围,表现不同

‘use strict’;

(function() {
    var varTest = ‘test var OK.’;
    let letTest = ‘test let OK.’;

{
    var varTest = ‘varTest changed.’;
    let letTest = ‘letTest changed.’;
}

    //输出”varTest changed.”,内部”{}”中声明的varTest变量覆盖外部的letTest声明
    console.log(varTest);
     
    
     //输出”test let OK.”,内部”{}”中声明的letTest和外部的letTest不是同一个变量
    console.log(letTest);
    

}());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值