日期:2014-05-16  浏览次数:20361 次

关于js 函数的一点疑问? 跪求解释
function test( ){
  var yyp = "dddd";
  var yyp ;
  alert( yyp );
 }
这个会弹出 dddd;

function test( ){
  var yyp = "dddd";
  var yyp = "eeee";
  alert( yyp );
 }
这个会弹出 eeee;

function test( ){
  var yyp = "dddd";
  var yyp = yyp;
  alert( yyp );
 }
这个会弹出 dddd;
以上给出的结果是浏览器里运行的结果;
下面是我的疑问
大家知道:在js里,同名的变量,后边变量的值会覆盖前边变量的值;
按照这个思路:
  第一个函数可以这样理解:第一次定义的变量yyp 值是“dddd”,第二次声明的变量,没初始化,值应为“undefined”
那么 弹出的值应该为 “undefined”,但是为什么弹出的是“dddd”;
  第二个函数按照这个思路得出的结果是正确的;
  第三个函数:我觉的当初始化完第一个变量后,紧接着的第二次声明,yyp变量已经被覆盖为“undefined”,再赋值的话,应该赋的是 “undefined”,但是为什么弹出的是“dddd”;



------解决方案--------------------
JScript code

var a = 1;
var a;
可以这样理解
var a;
a = 1;
a;
那么a为1.

反正记住 出现var,那么变量就在上下文的顶部被声明。

------解决方案--------------------
不要挑战底层的实现方式

不要研究不可能发生的问题
var yyp = "dddd";
var yyp ;
var yyp = 'eee';

你不会知道将来浏览器会怎么解释这几个语句