VIP用户交流群:462197261 收藏本站北冥有鱼 互联网前沿资源第一站 助力全行业互联网+
在线客服:78895949
tonglan
  • 当前位置:
  • 了解JavaScript中let语句

    建站教程 2019年11月09日 关键词:,,,

    使用let语句,允许你在JavaScript中创建块范围局部变量。let语句是在JavaScript的ECMAScript 6标准中引入的。

    在你往下了解let语句之前,我建议你先查看基于Infragistics jQuery库的Ignite UI,它可以帮助你更快地编写和运行Web应用程序。你可以使用JavaScript库的Ignite UI来快速解决HTML5,jQuery,Angular,React或ASP.NET MVC中复杂的LOB需求。(你可以在这里下载Ignite UI的免费试用版。)

    在ECMAScript 6之前,JavaScript有三种类型的范围:

    • 全局范围
    • 函数范围
    • 词汇范围

    为了详细探索let语句,请细想下面的代码段:

    function foo() {
    var x = 9;
    if (x > 5) {
    var x = 7;
    console.log("Value of x in if statement = " + x);
    }
    console.log("Value of x outside if statement = " + x);
    }
    foo();

    以上代码得到的输出:

    在上面的代码中,我们使用var语句声明变量x。因此,变量x的范围是函数范围。if语句内的变量x 就是if语句外创建的变量x 。因此,在你修改if语句块内变量x的值时,也会修改函数中变量x的所有引用的值。

    为了避免这种情况,你需要使用块级别范围,let语句允许你创建块范围的局部变量。

    修改上面的代码片段,使用let语句声明变量:

    function foo() {
    var x = 9;
    if (x > 5) {
    let x = 7;
    console.log("Value of x in if statement = " + x);
    }
    console.log("Value of x outside if statement = " + x);
    }
    foo();
    

    在上面的代码段中,我们使用let语句来声明范围级局部变量x。因此,在if语句内更新变量x的值不会影响if语句外的变量x的值。

    下面是上述代码的输出:

    与使用函数范围(或全局范围)声明的变量不同,使用let声明的变量是块范围的:它们只存在于它们定义的块中。

    变量提升

    使用let声明的变量提升不同于使用var声明的变量。因此,使用let声明的变量没有变量提升,这意味着使用let声明的变量不会移动到执行上下文的顶部。

    为了更好地理解这一点,请看以下这段代码:

    function foo() {
    console.log(x);
    console.log(y);
    var x = 9;
    let y = 67;
    }
    foo();

    作为输出,你将获得变量y的ReferenceError,变量y使用let语句声明。使用let声明的变量不会提升到执行上下文之上。

    重新声明变量

    你不能在同一个函数或块中使用let重新声明一个变量。这样做会出现语法错误。请看以下代码:

    function foo() {
    if(true){
    let x = 9;
    let x = 89; 
    }
    }
    foo();

    运行上面的代码会出来一个语法错误,如下所示:

    暂时性死区

    有时,使用let声明的变量会导致暂时性死区。在以下代码中,let x=x+67 将抛出x未定义的异常。

    之所以会出现这个错误,是因为表达式(x + 67)求的是if块范围内局部变量x的值,而不是函数范围内局部变量x的值。运行上面的代码,你会得到这样一个异常:

    你可以通过移动声明变量到表达式的上面一行来修复上述错误,如下所示:

    块级范围界定是任何编程语言最重要的功能之一,并且随着ECMAScript 6中let语句的引入,JavaScript现在也有了这个功能。使用let语句,允许创建一个作用域在块范围内的变量。这可以解决许多问题,例如全局范围变量的意外修改,闭包中的局部变量,以及帮助编写更清晰的代码。

    英文原文:Easy JavaScript, Part 1: Learn the 'let' Statement

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持北冥有鱼。

    您可能感兴趣的文章:

    • 了解javascript中let和var及const关键字的区别
    • 详解js中let与var声明变量的区别
    • servlet+jsp实现过滤器 防止用户未登录访问
    • 基于Eclipse 的JSP/Servlet的开发环境的搭建(图文)
    • 5分钟快速掌握JS中var、let和const的异同
    • JavaScript中var、let、const区别浅析
    • js中let能否完全替代IIFE

    广而告之:
    热门推荐:
    node跨域请求方法小结

    本文介绍了node跨域请求,主要介绍了两种方法,一种是jsonp,另一种res.wirteHead,具体如下: 第一种:jsonp 参看用nodejs实现json和jsonp服务 第二种:res.wirteHead node部分 var http = require('http') var url = require('url') var querystring = require('queryst···

    iframe 多层嵌套 无限嵌套 高度自适应的解决方案

    有A,B,C三个页面,A页面包含B页面,B页面包含C页面.A页面随着B页面自适应,C页面随着B页面自适应 A页面 复制代码 代码如下: <body> <iframe id="main" name="main" width="980" scrolling="no" frameborder="0" src="B页面" onload="this.height=main.document.body.sc···

    深入理解HTML5在移动开发方面的发展现状

    “我们正在用HTML5编写我们下一套移动产品。”“是啊,这些天很多人在玩着Appcelerator,我也在玩着。”“嗯,但这并不是我要说的那种HTML5产品。” 最近,我有很多类似的交流对话,可能因为我正在开发一套HTML5的应用吧。就像2005年的“AJ···

    windows下安装php的memcache模块的方法

    要求必备知识 熟悉基本编程环境搭建。 运行环境 windows 7(64位); php-5.3; memcached-1.2.6 下载地址 环境下载 什么是PHP Memcache模块 Memcache模块提供了于memcached方便的面向过程及面向对象的接口,memcached是为了降低动态web应用 从数据库加载数据而产生的一种常驻进程···

    解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql

    此教程中使用的相关IP等设置,在你的环境中要做相应修改。使用之前更新apt-get,因为服务器基本上是一个裸系统apt-get update;apt-get upgrade;1 我们使用root账户进行安装,首先切换到root账户,输入命令:sudo su 2 安装 MySQL 5输入命令:apt-get install mysql-server ···

    网页设计必备手册 216网页安全色大全

    网页中的颜色呈现会受到各种因素的影响,即使你的网页使用了非常漂亮的配色方案,但是如果每个人浏览的时候看到的效果都不相同,那么你的配色理念就不能够非常好地传达给浏览者。使用216网页安全色进行网页配色可以避免颜色失真问题。   网页安全色是指在不同硬件环境···

    JS实现简单的点赞与踩功能示例

    本文实例讲述了JS实现简单的点赞与踩功能。分享给大家供大家参考,具体如下: HTML部分: 赞:<button id="btn_zan">0</button> 踩:<button id="btn_cai">0</button> JS部分: function dianZan(){ var i = 0; return function(){ this.innerHTML =···

    php导出csv格式数据并将数字转换成文本的思路以及代码分享

    php导出csv格式数据实现:先定义一个字符串 存储内容,例如 $exportdata = '规则111,规则222,审222,规222,服2222,规则1,规则2,规则3,匹配字符,设置时间,有效期'."\n"; 然后对需要保存csv的数组进行foreach循环,例如 复制代码 代码如下:    &nb···

    PHP模糊查询技术实例分析【附源码下载】

    本文实例讲述了PHP模糊查询技术。分享给大家供大家参考,具体如下: 简介 从本质上揭密PHP模糊查询技术 功能 根据输入的关键字查找相关用户 PHP用户查询器案例分析 课程目标 掌握PHP模糊技术的应用 课程重点 PHP模糊查询的语法 PHP模糊查询的应用 课程案例(效果图) ···

    div可以输入内容不用input作为输入框屏蔽自动的input样式

    今天设计一个发表动态的窗口样式,发现当鼠标点击input时浏览器自动加上的样式和网站整体风格很不一致,虽然浏览器这种智能功能很先进但是有时候不免会影响设计整体的一致性。 然后就想着不用input作为输入框是不是可以,换成了 复制代码 代码如下: <div class="content"···