JavaScript进阶1
预解析
//预解析
//1)
console.log(a);
var a = 1;
//解析过程
var a;
console.log(a);
a = 1;
//2)例子
console.log(f);
var f = 123;
function f(){
console.log(456);
}
//解析过程
var f;
function f(){
console.log(456);
}
console.log(f); //function 当变量和函数同名时,优先留下函数的值(不管谁先谁后,函数优先级更高)
f = 123;
//4)
var x = 100;
function x(){
console.log(456);
}
console.log(x); //100
//解析过程
var x;
function x(){};
x = 100;
console.log(x);
//5)
console.log(a,b,c,d,e);
var a = 10;
var b;
c = 30;
function d(){
console.log('d')
};
var e = function(){
console.log('e')
}
//解析过程
var a;
var b;
function d(){};
var e;
//c 错误
//面试题
console.log(a);
var a = 1;
function a(){console.log(2)};
console.log(a);
var a = 3;
console.log(a);
function a(){console.log(4)}
console.log(a);
//解析过程
// var a;
// function a(){console.log(2)};
// function a(){console.log(2)}; //当变量和函数同名时,优先留下函数的值(不管谁前或后,函数优先级更高)
// function a(){console.log(4)}
//执行过程
// console.log(a); ===>function a(){console.log(4)}
// a = 1;
// console.log(a); ===>1
// a = 3;
// console.log(a); ===>3
// console.log(a); ===>3
作用域
//作用域 ES5 全局作用域 局部作用域 ES6添加块级作用域
var x = 10; //全局作用域
function f1(){
var y = 100; //局部作用域
console.log(x)
};
function f2(){
var z = 1000; //局部作用域
console.log(x)
};
console.log(y);
//1)
var a = 1; //全局作用域
function f1(){ //f1可访问 a
var b = 2; //b属于f1下的作用域
function f2(){
var c = b; // 2
b = a; //1
a = c; //2
console.log(a,b,c); // 2 1 2
};
f2();
};
f1();
//2)
var a = 1;
function f1(){
console.log(a); // 1
};
f1();
//3)
function f1(){
var a = 1;
};
f1();
console.log(a); // 报错
//4)
var a = 1;
function f1(){
console.log(a);
a = 2;
};
f1();
console.log(a);
//解析过程
// var a;
// function f1(){};
// a = 1;
// f1(); a = 2;
// console.log(a); == > 2
//5)
//重点:全局变量和局部变量不同名时,作用域是整个程序
//全局变量和局部变量同名时,全局变量的作用域不包含同名局部变量的作用域
var a = 1;
function f1(){
console.log(a); // undefined
var a = 2;
};
f1();
console.log(a); // 1
// 面试题
var a = 10;
function f1(){
var b = 2*a; //2*undefined ==>NAN
var a = 20;
var c = a+1; //21
console.log(b);
console.log(c);
};
f1();
面向对象的写法
//可见前JavaScript基础2文章
链接:https://blog.youkuaiyun.com/hhhmonkey/article/details/118367248
本文详细介绍了JavaScript的预解析机制,展示了不同情况下的执行顺序,并通过实例解析了作用域的概念,包括全局作用域、局部作用域以及ES6的块级作用域。此外,还探讨了函数和变量同名时的优先级问题。最后,文章提到了面向对象编程的简单应用。

被折叠的 条评论
为什么被折叠?



