目前公司要求用Cypress做测试,但是姐姐以前不会呀。怎么办,学呗!
首先打开官网,按照Get started里面的步骤先把环境整起。OK,环境好了,现在开始熟悉该框架的API. 慢慢发现,咦,怎么有我不熟悉的东西(var Let const)。这些是什么玩意,于是百度一波,才发现是JavaScript里面的玩意儿。
为避免遗忘,记录如下:
let和const是 ES6 新增的命令,用于声明变量,这两个命令跟 ES5 的var有许多不同,并且let和const也有一些细微的不同,在认真阅读了阮一峰老师的文档后,发现还是有一些不知道的细节,重新整理了一下。
内容:
var和let/const的区别
1. 块级作用域
2. 不存在变量提升
3. 暂时性死区
4. 不可重复声明
5. let、const声明的全局变量不会挂在顶层对象下面
const命令两个注意点:
1. const 声明之后必须马上赋值,否则会报错
2. const 简单类型一旦声明就不能再更改,复杂类型(数组、对象等)指针指向的地址不能更改,内部数据可以更改。
为什么需要块级作用域?
1. ES5只有全局作用域和函数作用域,没有块级作用域。
2. 这带来很多不合理的场景:
3. 内层变量可能覆盖外层变量
4. 用来计数的循环变量泄露为全局变量
var tmp = new Date();
function f() {
console.log(tmp); // 想打印外层的时间作用域
if (false) {
var tmp = 'hello world'; // 这里声明的作用域为整个函数
}
}
f(); // undefined
var s = 'hello';
for (var i = 0; i < s.length; i++) {
console.log(s[i]); // i应该为此次for循环使用的变量
}
console.log(i); // 5 全局范围都可以读到
块级作用域
1.作用域
function f1() {
let n = 5;
if (true) {
let n = 10;
console.log(n); // 10 内层的n
}
console.log(n); // 5 当前层的n
}
2. 块级作用域任意嵌套
{{{{
{let insane = 'Hello World'}
console.log(insane); // 报错 读不到子作用域的变量
}}}};
3. 块级作用域真正使代码分割成块了
{
let a = ...;
...
}
{
let a = ...;
...
}
以上形式,可以用于测试一些想法,不用担心变量重名,也不用担心外界干扰
块级作用域声明函数:
在块级作用域声明函数,因为浏览器的要兼容老代码,会产生一些问题!
。。。。
写不完了,文章转载自:https://juejin.cn/post/6844903752139276301