使用var 两次输出都是obama,这是因为ES5只有全局作用域和函数作用域,没有块级作用域,这带来很多不合理的场景。第一种场景就是你现在看到的内层变量覆盖外层变量。而let则实际上为JavaScript新增了块级作用域。用它所声明的变量,只在let命令所在的代码块内有效、
let name = 'aa'
while (true) {
let name = 'bb'
console.log(name) //bb
break
}
console.log(name) //aa
const也用来声明变量,但是声明的是常量。一旦声明,常量的值就不能改变。
onst drfdf= 10;
drfdf = 20 //这里在声明就会报错 当我们尝试去改变用const声明的常量时,浏览器就会报错。const有一个很好的应用场景,就是当我们引用第三方库的时声明的变量,用const来声明可以避免未来不小心重命名而导致出现bug:
具有一个参数的简单函数
1
2
|
var
single = a => a
single(
'hello, world'
)
// 'hello, world'
|
函数体多条语句需要用到大括号
1
2
3
4
5
6
7
|
var
add = (a, b) => {
if
(
typeof
a ==
'number'
&&
typeof
b ==
'number'
) {
return
a + b
}
else
{
return
0
}
}
|