<!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>