js函数的赋值和调用
2016-06-08 19:10
246 查看
今天遇到一个很奇特的问题,我谢了一个测试js先声明的方法,能否调用后声明的方法,结果发现了这个问题:
demo.html代码如下:
<html>
<head>
<script src="demo.js"></script>
</head>
this i my js test!
<div id="test"></div>
<button id="button">mybutton</button>
</html>
demo.js代码如下:
print=function(){
alert("i print out content");
realPrint();
};
realPrint=function(){
document.getElementById("button").onclick=print();
};
window.onload=print();
最后发现,html还没有加载完就,就调用了print()方法,而且,alert的类容无线循环调用了。
正确的代码是:
document.getElementById("button").onclick=print;
原因是加上括号后,相当于方法的调用,所以,html还没加载完,就调用了print方法,还未点击test按钮,就运行了print方法。
demo.html代码如下:
<html>
<head>
<script src="demo.js"></script>
</head>
this i my js test!
<div id="test"></div>
<button id="button">mybutton</button>
</html>
demo.js代码如下:
print=function(){
alert("i print out content");
realPrint();
};
realPrint=function(){
document.getElementById("button").onclick=print();
};
window.onload=print();
最后发现,html还没有加载完就,就调用了print()方法,而且,alert的类容无线循环调用了。
正确的代码是:
document.getElementById("button").onclick=print;
window.onload=print;
原因是加上括号后,相当于方法的调用,所以,html还没加载完,就调用了print方法,还未点击test按钮,就运行了print方法。
相关文章推荐
- JS中NaN值与isNaN()函数
- jstorm学习
- 在Servlet/JSP的学习中
- js跨域访问
- JavaScript的instanceof运算符学习教程
- JavaScript中instanceof运算符的使用示例
- VC中程序调用Js自定义函数的注意事项
- 【JSHint解读二】 jshint 配置解析
- Javascript 注入攻击
- WebBrowser介绍——Javascript与C++互操作
- 实例讲解JavaScript中instanceof运算符的用法
- javascript浅谈数组的声明
- WordPress init admin_init 加载多次js文件后,js扩展不能运行
- js cookie 读和写
- JavaScript DOM(三) Element 类型
- 网页展示本地图片
- javascript 常用函数(二)
- [Effective JavaScript 笔记]第29条:避免使用非标准的栈检查属性
- JavaScript高级程序设计 第六章 面向对象程序设计
- JavaScript基础知识问答题(答案仅供参考)