#### let和var的区别
- let不会变量提升
- var会变量提升
~~~
console.log(example)
var example=1
~~~
它不会报错:
![](https://box.kancloud.cn/39bf885bf17b7a378c29a1aa0b84f6de_117x37.png)
如果是let
~~~
console.log(ex2)
let ex2=2
~~~
他会报错:
![](https://box.kancloud.cn/8f66223a202f1bec6ce9cd8c53ea3a43_271x49.png)
因为js在执行代码的时候,首先都会把var的变量提升到最顶部,然后在自己所在的位置再给他赋值,所以第一个不会报错,而Let的化,它不会提升所以会报错
#### let的使用
- 一般情况下,使用Let都会放在封闭代码的顶部,以便整个代码块都可以访问
- 如果再统一执行环境下,var 一个变量 再同时let 一个同名变量会报语法错误
~~~
var count = 30;
let count = 40;
~~~
![](https://box.kancloud.cn/ad341cf32b1509f47d2d73abc42a5207_300x57.png)
- 但是在不同执行环境下就不会报错如:
~~~
var count = 30;
if(true){
let count = 40;
}
console.log(count)
~~~
![](https://box.kancloud.cn/17864fd290878b7bb5592d177479b53d_120x47.png)
由let 后面的变量一离开 {}代码块,就会立即被销毁,所以上面打印出来的值是30
## const
- const是常量,一旦声明了就无法更改
- const必须初始化(即必须赋初始值),不然会报错:
~~~
const age;
console.log(age)
~~~
![](https://box.kancloud.cn/a340c6cd7166fab25ea821c8e0e23443_302x41.png)
一般情况下要这么写:
~~~
const age = 10;
console.log(age)
~~~
- const和let一样,也是块级标识符,所以const 只在当前代码块内有效,一旦执行到块外,就会被销毁,同样const也不会被提升至作用域顶部
****
TDZ(临时死区)
与var 不同,let以及const 并不会变量提升,当Js引擎搜索变量声明时,要么把变量提升至作用域顶部(var),要么将声明放入临时死区,访问临时死区的变量就会触发运行错误:
如:
~~~
if(true){
console.log(typeof value);//引用错误
let value = "blue"
}
~~~
~~~
console.log(typfof value);//undefinded
if(true){
let value = 'blue'
}
~~~
- 空白目录
- Javascript
- angularjs
- 自定义指令
- scope
- 自定义指令的封装
- 自定义指令限制只能输入数字
- 轮播图
- 写angular的顺序
- $state
- video
- Es6
- Let
- 箭头函数
- export
- promise
- 函数
- vue
- vue安装,以及项目结构
- vue的使用
- easy-vue
- vue起步
- vue基础
- vue-router
- vue-各文件的依赖关系
- vuex
- vue使用sass语法
- mpvue使用wx.parse
- vue-cli 构建vue项目
- vant的使用
- vue使用插件及常见问题
- 原生Js
- 数组
- ajax
- 执行上下文
- 正则表达式
- jqurey
- jqurey-mobile
- html5
- 工具
- svn使用总结
- webpack
- webpack的构建
- WebStorm
- 切图相关
- 苹果手机注意事项
- other
- 前端的价值
- 面试相关
- css
- 小程序如何引用外部字体
- 流的理解
- 替换元素
- content和伪元素
- padding和background 绘制图形
- css圆角,阴影,渐变
- line-height verticle-align
- 使用background绘制4个直角
- android的字体偏上的问题
- 小程序
- 小程序常见问题
- 小程序常用效果
- mpvue
- nodejs
- 前端工程化学习笔记
- mork.js学习