javascript匿名函数自我执行的小问题

javascript匿名函数自我执行的小问题,第1张

第二个不是匿名执行函数,

第一个是匿名函数(但是不建议这么做, 因为有可能会引起歧义), a到底是function还是num 实际上是一个num

第二个缺少函数名 报错

第三个才是匿名执行函数(推荐这样写)

主要原因是浏览器对js的解析方法, 如果你非要写类似于1这样的代码, 你就需要好好研究浏览器如何解析js的, 是从右向左还是从左向右, 还有好多好多判断

所以作为一个使用者, 我们要写标准的代码, 这种歧义性很大的代码万万写不得,

this关键字代指当前对象。未必仅指window

比如:

<body>

<form onsubmit="return checkform(this)">

<input type="text" name="txtbox" />

<input type="button" value="button" onclick="callme(this)"/>

<input type="submit" value="submit" name="btnsubmit"/>

</form>

</body>这里的this指当前的form。

在checkform函数中就可以这么写:

function checkform(form){

     if(formtxtboxvalue == ""){ alert("no data"); return false; }

}

在type="button"中,callme函数中的this,代表当前的button对象。

在javascript中写callme函数:

function callme(o){

    alert(ObjectprototypetoStringcall(o)); //结果显示:[object HTMLInputElement]

}

再试着运行这一段:

windowonload = function(){ callme(this);  } //结果显示:[object Window],这里的this才是指window

再试着运行这一段:

var m = {

    callme: function(){

        alert(ObjectprototypetoStringcall(this));

    }

};

windowonload = function(){ mcallme(this);  } //结果显示:[object Object],这里的this是指对象m,

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/11670862.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存