var:
当在函数内部没有定义这个变成,默认就是在全局的上下文定义了一个var sum;
function add(num1, num2) { sum = num1 + num2; // var sum = num1 + num2 这个样的结果就是报错sum is not defined return sum; } let result = add(10, 20); // 30 console.log(sum); //30
变量提升
console.log(name); // undefined var name = ‘Jake‘;
函数提升变量,可以把
function getName(){return 4};//函数声明
看错是声明加赋值的功能,函数表达式就只是一个声明赋值还是需要根据全局的上下文来执行的。
var getName = function(){return 2};//函数表达式 function getName(){return 4};//函数声明 console.log(getName());//2 console.log(getName());//4 var getName = function(){return 2};//函数表达式 console.log(getName());//2 function getName(){return 4};//函数声明
let:
就是块级作用域
const:
它和let的区别就是,首先当定义const的时候需要提前赋值,不能更改引用名和数值
const o1 = {}; o1 = {}; // TypeError: 给常量赋值 const o2 = {}; o2.name = ‘Jake‘; console.log(o2.name); // ‘Jake‘
const o3 = Object.freeze({}); o3.name = ‘Jake‘; console.log(o3.name); // undefined
总结:
原文:https://www.cnblogs.com/yuxinyu/p/14872286.html