日期:2021年8月8日
作者:Commas
注释:如果您觉得有所帮助
,帮忙点个赞
;如果有不对的地方,还望各位大佬不吝赐教,谢谢^ - ^
(ง •_•)ง 积跬步以致千里,ES6的学习笔记
1.01365 = 37.7834;0.99365 = 0.0255
1.02365 = 1377.4083;0.98365 = 0.0006
一、变量声明与赋值
这里就不用
var
演示,直接用let
,其实声明与赋值的过程都一样;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
//(1)单个变量声明:
let a;
//(2)多个变量声明:
let b,c,d,e;
//(3)单个变量声明并赋初始值:
let f = "god";
//(4)多个变量声明并赋初始值:
let g = 99,h = "very good";
</script>
</body>
</html>
知识加油站:现代浏览器
<script></script>
中默认脚本语言为javascript
,所以不需要写成<script type="text/javascript"></script>
二、let与var的比较
内容 | let | var |
---|---|---|
是否可以重复声明 | 不可以 | 可以 |
是否存在块级作用域 | 存在 | 不存在 |
是否存在变量提升 | 不存在 | 存在 |
是否影响作用域链 | 不影响 | 不影响 |
全局变量是否为顶层对象属性 | 不是 | 是 |
1)变量重复声明
1-1)var
可以重复声明
//(1)首次声明
var a;
//(2)再次声明
var a = 1;
//正常运行,不会报错
1-2)let
不可以重复声明
//(1)首次声明
let a;
//(2)再次声明
let a = 1;
//报错,如下所示:
//Uncaught SyntaxError: Identifier 'a' has already been declared
2)块级作用域
2-1)var
不存在块级作用域
if(true){
var name = "Commas";
console.log("name=" + name);
//控制台输出:name=Commas
}
console.log("name=" + name);
//控制台输出:name=Commas
2-2)let
存在块级作用域
if
、else
、while
、for
if(true){
let name = "Commas";
console.log("name=" + name);
//控制台输出:name=Commas
}
console.log("name=" + name);
//控制台输出:name=
3)变量提升
3-1)var
存在变量提升
console.log("name=" + name);
var name = "Commas";
//正常运行,不会报错
//控制台输出:name=Commas
3-2)let
不存在变量提升
console.log("name=" + name);
let name = "Commas";
报错,如下所示:
//ncaught ReferenceError: Cannot access 'name' before initialization at js001.html:20
4)作用域链
//var name = "Commas";
let name = "Commas";
function hello(){
console.log("Hello " + name);
}
hello();
//无论var,还是let,
//控制台均输出:Hello Commas
解析:
hello()
函数中找不到变量name
,就会向上查找该变量,找到了name = "Commas"
,接着输出,通常我们可以归纳为【就近原则】。
5)顶层对象属性
var name = "Commas";
// 如果在 Node 的 REPL 环境,可以写成 global.name
// 或者采用通用方法,写成 this.name
console.log(window.name);
//控制台输出:Commas
let name = "Commas";
console.log(window.name);
//控制台输出:undefined
版权声明:本文为博主原创文章,如需转载,请给出:
原文链接:https://blog.csdn.net/qq_35844043/article/details/118150852