window.onload = function() {
//浏览器预解析 先解析 var function
console.log(c) //c is not defind
var a = 1;
var b;
c = 2;
d()//3
function d() {//函数声明
console.log(3)
}
e() //e is not a function
var e = function() {//函数表达式
console.log(4)
}
// 变量和函数重名时,函数的优先级比变量高 PS:预解析(执行是由上而下)
// 函数和函数重名时,遵循由上而下
console.log(f) //打印出函数体
var f = 123;
function f() {
console.log(456);
}
//预解析
//var f; 未定义
//f 的值 函数本身
//执行过程
//f = 123;
//常见面试题
console.log(a); //预解析时,变量与函数名重复,函数优先 //打印出最后一个函数体
var a = 1;
function a(){
console.log(2);
}
console.log(a) //1
var a = 3;
console.log(a)//3
function a(){
console.log(4)
}
console.log(a)//3
/** let const
* 1、不存在变量提升
* 2、同一个作用域内不能重复定义
* 3、有着严格的作用域
*
* const
* 4、声明一个只读常量,一旦声明,常量的值就不能改变
* 5、必须有初始化值
* 6、如果定义的值是个对象或者数组则可以改变内部值
*/
//let const 不存在变量提升
console.log(x); //x is not defined
let x = 1;
//作用域 es5 全局作用域 函数作用域
// var a1 = 1;
// function f1(params) {
// console.log('f1中'.a1) //undefined 预解析
// var a1 = 2
// }
// f1() // undefined
// console.log("外",a1) //1
var a1 = 1;
function f1(params) {
console.log('f1中'.a1) //undefined 预解析
a1 = 2
}
f1() // 1
console.log("外", a1) //2
// 同一个作用域中不能重复定义同一个名称
let a = 10;
let a = 20;//error
//var 属于函数作用域 let 属于块级作用域{}
function f2() {
var n =10;
if(true){
var n = 20;
}
console.log(n)
}
f2()//20
function f3() {
let n =10;
if(true){
let n = 20;
}
console.log(n)
}
f2()//10
//const 定义只读常量
const a = 2;
a=5; //error
const a; //error
const obj={};
obj.name = 'abc'
const obj = [] //error
const arr = []
arr.push(1)
//箭头函数(下面两个函数相等)
var f = v => v; // var 变量名 = 参数 => 函数体 (默认有return)
var f = function(v) {
return v;
}
var f = function() {
return 123;
}
var f = () => 123
var f = function(n1,n2) {
return n1+n2;
}
var f = (n1,n2) => n1+n2;
var f = function(n1,n2) {
list(n1+n2);
}
var f = (n1,n2) => {list(n1+n2)};
var f = (n1,n2) => ({name:n1,age:n2});//除对象以外 用{}
//数据结构 数组 对象
//新增数据类型 :set类似数组 map 类似对象
var m = new Map()
m.set('name','tina') //方法:设置
m.get('name') //方法:获取
m.size; //获取长度
//babel
//对象遍历用 for in
//map遍历用 for of
var arr = ['a','b','c'];
for(let v of arr){
console.log(v) // a b c
}
for(let [key,value] of m){
console.log()
}
}
学习笔记:ES6之var let const区别和箭头函数的理解
最新推荐文章于 2021-03-08 10:46:11 发布