<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script type="text/javascript">
// 变量命名冲突的问题:
// 1 两个变量或者是两个函数命名冲突
// 第二个var声明就被忽略掉,相当于是直接赋值
/*var num = 123;
var num = 456;
console.log(num); // 456
var num = 123;
num = 456;*/
/*fn();
function fn() {
console.log(1);
}
function fn() {
console.log(2);
}*/
// 2 如果一个变量跟一个函数命名冲突了
// a. 如果这个变量声明了但是没有赋值,此时获取到的名字 指的就是函数
// console.log(f);
// var f;
// function f() {}
// console.log(f);
// b. 如果一个变量声明并赋值了,此时,就看获取名字的位置:
// 1 如果是在赋值之前,访问这个变量(名字),此时就是函数
// 2 如果是在赋值之后,访问这个变量, 此时就是:变量的指
/*console.log(f);
var f = 123;
function f() {}
console.log(f);*/
// var f;
// function f() {}
// console.log(f);
// f = 123;
// console.log(f);
/*// 函数内部
function fn() {
// var fn = 123;
fn = 123;
console.log(fn);
}
fn();
console.log(fn);*/
</script>
</body>
</html>