求JS的原理!!!!!!!!!!!!!!!

不会武功的猪 发布于 2013/06/05 21:49
阅读 722
收藏 1
<script>
alert(a);


function a(){ alert(33)};


</script>


为什么会弹出function a(){ alert(33)}???求JS的原理!!!

加载中
0
sjunjun
sjunjun

首先是a的作用域,把函数a也当作变量,变量在作用域内任何地方定义都是一样的,这就是为啥js里一般定义变量全放在一起而且是放在最开始.这样就可以理解为什么a的定义在后面,而alert(a)已经可以访问到a了.

其次是alert()函数会把任何传入的参数转换为字符串,在这里应该是调用了函数对象的tostring或者valueof.

0
ErosVshare
ErosVshare
建议看看基础书。
0
jscoder
jscoder

你这属于 js预编译 过程的解释

你可以多尝试

alert(b)

var b=3;  //undefined

alert(a());

function a(){alert(33)}


0
程海峰
程海峰

首先 

function a..

是一个函数,也是一个对象,alter(a) ,a就是引用该对象的变量,自动调用toString()返回a的申明

0
rwbp
rwbp

function a(){}  就是var a=function(){}

alert(a)就类似

var b=0;     alert(b);

0
我是潮汐
我是潮汐
在js中 function也是对象.
0
溪涧顽石
HandMU
HandMU
正解
0
晋哥哥
晋哥哥
呃,从基础看起吧。
0
铂金小龟
铂金小龟
你真该买本JS的书来看看
返回顶部
顶部