目录
语法很大程度上借鉴了C语言以及其他类C语言,如Java(JavaScript!=Java)
这里面主要介绍一些重要的部分
- 函数级作用域
- 作用于提升(可以理解为在使用的函数下面定义函数所需要的变量)
- 重复声明不报错
- 全局声明的变量成为window对象的属性
function text(){ var msg='12345' console.log(msg) } text();
function text(){ var msg='12345' console.log(msg) } text(); console.log(msg)
function text(){ var msg='12345' msg2='123456' msg3='1234567' console.log(msg+msg2+msg3) } text();
var quanju="example" function text(){ console.log(quanju) } text();
- 块级作用域
- 没有提升
- 不能重复声明
- 混用var和let,重复声明会报错
- 全局声明不是window的对象属性
function text(){ var name='123' let name='1234' console.log(name) } text();
function text(){ console.log(name) let name="123" } text();
html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> <title>title> <script type="text/javascript"> script> head> <body> <script> var age="1" let name="123"; script> <script> var age="12" let name="12345"; script> body> html>(这种错误try/catch语句或typeof操作符也不能解决)
Text1(){ for(var i=0;i<=5;i++){ } console.log(i) } Text2(){ for(let j=0;j<=5;j++){ } console.log(j) } Text1(); Text2();
const行为与let基本上相同,唯一一个重要的区别是他声明变量时必须同时初始化变量
Text(){ const age=35; age=37 } Text();
1、不使用var:
2、const优先,let次之:
二者使变量有了明确的作用域、声明位以及不变的值
const声明可以让浏览器运行时前置保持变量不变,也可以让静态代码分析工具提前发现不合法单位布局