let 和const

let 命令

es6新增了let命令,用于声明变量,与var用法类似,但是使用let声明变量只在它所在的块内有效,而var则是定义的全局变量
{let a=10;var b=1;
}
a   //a is not defined,外部的a不能访问到上面块中定义的a变量
b   //1

  

let不存在变量提升提升

//使用var会发生变量提升,当脚本开始运行使用var命令声明的变量已经存在
console.log(foo);   //undefined
var foo=2;console.log(foo);   //报错ReferenceError
let foo=2;          
//使用let声明,声明的变量一定要在声明之后使用,否则会报错

 

let不允许重复声明

let不允许在相同作用域内重复声明同一个变量

//报错
function(){let a=10;var a=1;//let a=3;
}

 

const命令

const用于声明常量,并且该常量那个是只读常量,一旦声明该常量就不能被更改

const a=1;
a       //1
a=2;    //报错

 

并且const只声明,不赋值也会报错。

const a;    //报错

 

const变量和let一样只能在声明之后使用,并且命令生命的变量也不会提升,同样也不可以重复声明。

const本质

const的常量不能够更改实质上并不是变量的额值不能更改,而是变量指向的内存地址不能变动。

块级作用域

es5只有全局作用域和函数作用域,但是没有块级作用域。

没有块级作用域导致的问题

  1. 内层变量可能会覆盖外层变量
  2. 用来计数的循环变量泄露为全局变量
for(var i=0;i<10;i++){console.log(i)
}
console.log("外部"+i)
初出结果:
1
2
3
4
5
6
7
8
9
外部10

 

 可以看出外部的i会受到循环体中i的影响,如果使用let就会有块级作用域,最后就会显示,外部i不能找到就会报错。 

es6的块级作用域

在块级作用域中,外层作用域不能访问内层作用域的变量,,但是内层作用域可以定义外层作用域的同名变量。

function example(){let n=5;if(true){let n=10;   //内层作用域可以和外层作用域声明同名变量
    }console.log(n);     //5,外层作用域不会受到内层作用域的影响
}

 

块级作用域与函数声明

在es5中规定,函数只能在顶层作用域和函数作用域之中声明,不能再块级作用域中声明。
但是es6有所改变:

  1. 允许在块级作用域内声明函数
  2. 函数声明允许类似var,会提升到全局作用域或函数作用头部。
  3. 函数声明会提升到块级作用域头部
  4. 但是es6规定,在块级作用域中声明函数类似于let,在块级作用域之外不能引用。
  5. 但是需要避免在块级作用域中声明函数,一定要使用函数表达式形式写,而不是韩红素声明语句
//函数声明语句
{let a="test"function(){return a;}
}//函数表达式
{let a="test";let f=function(){return a;};
}
//并且块级作用域一定要有大括号,才能声明函数

 

转载于:https://www.cnblogs.com/zzzha/p/9435790.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427232.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

centos7搭建apache服务器(亲测可用)

1安装apache yum install httpd httpd-devel -y 2开启服务器 systemctl start httpd.service 3开机自启 systemctl enable httpd.service 4关闭防火墙 5端口访问 6修改vi /etc/httpd/conf/httpd.conf&#xff0c;替换 7查看selinux 也可以不修改&#xff0c;放入/var/www/h…

java ssl 双向认证_Java实现 SSL双向认证

我们常见的SSL验证较多的只是验证我们的服务器是否是真实正确的&#xff0c;当然如果你访问的URL压根就错了&#xff0c;那谁也没有办法。这个就是所谓的SSL单向认证。但是实际中&#xff0c;我们有可能还会验证客户端是否符合要求&#xff0c;也就是给我们每个用户颁发一个证书…

python基础公式_一、Python基础(数据类型、基本函数、基本运算)

​1.变量作用&#xff1a;为了简便&#xff0c;运算时方便修改运算中的值&#xff0c;代指一些复杂过长的数据&#xff1b;what&#xff1a;用变量代指一些内容&#xff1b;how&#xff1a;全部由字母、数字和下划线组成&#xff0c;数字不能开头&#xff0c;不能和Python关键词…

Python爬去知乎上问题下所有图片

from zhihu_oauth import ZhihuClient from zhihu_oauth.exception import NeedCaptchaExceptionclient ZhihuClient()try:client.login(email_or_phone, password)print(u"登陆成功!") except NeedCaptchaException:# 保存验证码并提示输入&#xff0c;重新登录wit…

xshell连接突然报Connection closed by foreign host.

1问题描述报错 Connection closed by foreign host. Disconnected from remote host(yaoGS) at 155513. 2登入虚拟机 在linux系统操作中&#xff0c;经常需要连接其他的主机&#xff0c;连接其他主机的服务是openssh-server&#xff0c;它的功能是让远程主机可以通过网络访问…

java 爬虫_探索Java 多线程爬虫及分布式爬虫架构

在我们调试爬虫程序的时候&#xff0c;单线程爬虫没什么问题&#xff0c;但是当我们在线上环境使用单线程爬虫程序去采集网页时&#xff0c;单线程就暴露出了两个致命的问题&#xff1a;采集效率特别慢&#xff0c;单线程之间都是串行的&#xff0c;下一个执行动作需要等上一个…

數據庫ORACLE轉MYSQL存儲過程遇到的坑~(總結)

ORACLE數據庫轉MySQL數據庫遇到的坑 總結 最近在做Oracle轉mysql的工程&#xff0c;遇到的坑是真的多&#xff0c;尤其是存儲過程&#xff0c;以前都沒接觸過類似的知識&#xff0c;最近也差不多轉完了就總結一下。希望能幫到一些人&#xff08;包括以後的自己&#xff09;~ 1&…

java jdbc开启事务_spring jdbc 事务配置

配置WEB.XMLxmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_0.xsd"version"3.0">org.springframework.web.context.ContextLoa…

python 文件指针在文件末尾_python文件操作及seek偏移详解

一、python文件操作中的编码本次测试是基于python 2.7.12 OS:Ubuntu16.04 pycharm环境&#xff0c;以及win7下2.7.12;首先说下汉字在文件中占用的字节数&#xff0c;这个先看以下实验(win7)下 因为linux下不支持gbk&#xff0c;本文不讲utf-8 ,gbk编码具体知识&#xff0c;有…

docker小实战和应用

1运行一个docker 一开始docker进不去&#xff0c;需要去https://hub.docker.com注册一个 2docker info查看信息 3docker run ubuntu echo hello world 查看第一个命令输出 4docker images 查看本地的镜像 5查看开启的容器和没有开启的容器 Docker ps -a 6 docker pull ngi…

java 窗口 单例_java单例模式实现面板切换

本文实例为大家分享了java单例模式实现面板切换的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下1、首先介绍一下什么是单例模式&#xff1a;java单例模式是一种常见的设计模式&#xff0c;那么我们先看看懒汉模式&#xff1a;public class Singleton_ {//设为私有方…

java垃圾回收机制_干货:Java 垃圾回收机制

什么是自动垃圾回收&#xff1f;自动垃圾回收是一种在堆内存中找出哪些对象在被使用&#xff0c;还有哪些对象没被使用&#xff0c;并且将后者删掉的机制。所谓使用中的对象(已引用对象)&#xff0c;指的是程序中有指针指向的对象&#xff1b;而未使用中的对象(未引用对象)&…

java项目定时任务_java项目定时任务实现

首先配置spring-context.xml文件在xmlns 下加如下代码xmlns:task"http://www.springframework.org/schema/task"在xsi:schemaLocation里添加如下代码http://www.springframework.org/schema/taskhttp://www.springframework.org/schema/task/spring-task-3.1.xsd还有…

enter power save mode解决

这个问题是什么产生的呢&#xff1f;这是我刚来公司的第三天&#xff0c;公司停电&#xff0c;等重新来电的时候有三台电脑都出现了这个问题。连接显示屏没有反应 遇到这种问题&#xff0c;首先这是主机没有正常启动引起的 1第一步&#xff1a;先插拔下电源&#xff0c;重新启动…

python多线程编程_Python 多线程编程

Thread类classThread:def __init__(self&#xff0c;groupNone&#xff0c;targetNone&#xff0c;nameNone&#xff0c;args()&#xff0c;kwargsNone&#xff0c;*&#xff0c;daemonNone)group&#xff1a;None&#xff0c;为日后扩展 ThreadGroup 类实现而保留。target&…

linux修改网卡名(亲测有效)

1查看网卡ip addr 2cd /etc/sysconfig/network-scripts Ls查看 3mv ifcfg-eno16777736 ifcfg-eth0重命名&#xff0c;然后编辑 最后一行加入IPADDR192.168.30.136 NETMASK255.255.255.0 HWADDR00:0C:29:aa?2f BOOTPROTO改成static 4 vi /etc/default/grub 5 grub2-mkconfig…

java 存储空间_Java中的存储空间类型

在Thinking in java里&#xff0c;列举了Java的六种存储类型1.寄存器编写过汇编程序的应该对寄存器非常熟悉&#xff0c;那时候用的ax&#xff0c;bx&#xff0c;cx&#xff0c;dx等等。寄存器在CPU里面&#xff0c;所以速度特别快&#xff0c;但是数量非常有限。在java中无法直…

读取html文件,让其中的内容和notepad打开这个html的样子一样。

然后我写了个python代码&#xff0c;让其读取这个html文件后&#xff0c;内容和这个一样&#xff1a; htmlfopen(13144815898.html,r,encoding"utf-8") htmlconthtmlf.read() print((htmlcont)) 转载于:https://www.cnblogs.com/www-caiyin-com/p/9447285.html

python默认参数举例_Python中的默认参数实例分析

本文研究的主要是Python中的默认参数的相关内容&#xff0c;具体如下。熟悉C语言的可以知道&#xff0c;C语言中的默认参数是写在函数声明中的&#xff0c;为语法糖&#xff0c;与函数的调用无关&#xff0c;是在函数调用的时候由编译器补齐参数然后进行调用。而Python中的默认…

centos安装ipconfig和telnet命令

1我安装的是mini版的 2首先ipconfig查看不到命令 yum -y install net-tools 解决 3在同事的要求下要安装telnet 首先 rpm -qa telnet-server yum -y install telnet-server rpm -qa telnet yum -y install telnet rpa -qa xinetd yum -y install xinetd 测试 netstat -tnl …