Javascript中的let是ES6新增的关键字,声明变量时,可以使用
let
和var
这两个关键字, 它们有一些区别,下面是一些示例来说明它们之间的不同之处
在一对{ }内(块级)分别使用 var
和 let
声明的变量作用域不同
if (true) {
var a = "我是使用var声明的变量";
let b = "我是使用let声明的变量";
}
console.log(a); // "我是使用var声明的变量"
console.log(b); // Uncaught ReferenceError: b is not defined
此时,a
在块级作用域外部仍然可见,而 b
由于具有块级作用域,只在 if
语句内可见。
在循环中:
在使用 var
的情况下,异步代码中使用的是同一个变量 i
,而在使用 let
的情况下,每次循环都会创建一个新的 j
,因此不会出现问题。
for (var i = 0; i < 5; i++) {
setTimeout(function() {
console.log("var is:", i); //会打印5次 "var is: 5"
}, 100);
}
for (let j = 0; j < 5; j++) {
setTimeout(function() {
console.log("var is:", j); // 会依次打印"var is: 0", "var is: 1", ..., "var is: 4"
}, 100);
}
console.log(a); // undefined
console.log(b); // Uncaught ReferenceError: b is not defined
var a = "hello";
let b = "world";
a
被提升并初始化为 undefined
,而 b
在声明之前不能访问,因为它受到了暂时性死区的影响。
var
允许在同一作用域内多次声明同一个变量,而 let
则不允许。
var a = "hello";
var a = "world"; // 可重复声明,不会报错
let b = "hello";
let b = "world"; // Uncaught SyntaxError: Identifier 'b' has already been declared
使用 var
声明的全局变量会成为全局对象的属性,而使用 let
声明的变量不会。
var = "hello";
console.log(window.a); // "hello"
let b = "world";
console.log(window.b); // undefined
综上所述,let
在许多情况下是更安全的变量声明方式,推荐在支持ES6的 JavaScript 代码中使用。
Qt是一个跨平台的 C++图形用户界面库。QT一度被诺基亚拥,后出售给芬兰的软件公司Digia Oyj。PyQt5是基于Digia公司Qt5的Python接口,由一组Python模块构成。PyQt5本身拥有超过620个类和6000函数及方法。