JS 函数调用过程遇到的问题
2016-11-17 15:32
218 查看
在封装一个监听程序的时候发按照自己以前的写法,怎么样都得不到自己想要的结果,找了半天才发现平时没有在函数参数里调用过
如下:
var contain = document.getElementById('contain');
function addEvent(ele, type, hander) {
// 执行代码
if (ele.addEventListener) {
ele.addEventListener(type, hander, false);
} else if (ele.attachEvent) {
ele.attachEvent('on' + type, hander);
} else {
ele['on' + type] = hander;
}
}
var btn = document.getElementById('btn');
function showFun(){
contain.style.display='block';
}
addEvent(btn,'click',showFun()); // 错误写法
addEvent(btn,'click',showFun); // 正确写法
百度了一下js中函数的调用:
函数只要是要调用它进行执行的,都必须加括号。此时,函数()实际上等于函数的返回值。当然,有些没有返回值,但已经执行了函数体内的行为,这个是根本,就是说,只要加括号的,就代表将会执行函数体代码。
以前就以为只要调用函数就必须要在函数名后面加括号,结果看了下文档对自己以前的认识完全推翻;
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
美丽的分割线
当函数作为参数被传时,不需要加括号,只需函数名当作指针传入,当需要时,会根据指针找到对应的函数来执行里面的代码
如果你在当作参数时,加上括号,那么,这个函数就会执行,而不是在传入函数需要的时候执行。
如下:
var contain = document.getElementById('contain');
function addEvent(ele, type, hander) {
// 执行代码
if (ele.addEventListener) {
ele.addEventListener(type, hander, false);
} else if (ele.attachEvent) {
ele.attachEvent('on' + type, hander);
} else {
ele['on' + type] = hander;
}
}
var btn = document.getElementById('btn');
function showFun(){
contain.style.display='block';
}
addEvent(btn,'click',showFun()); // 错误写法
addEvent(btn,'click',showFun); // 正确写法
百度了一下js中函数的调用:
函数只要是要调用它进行执行的,都必须加括号。此时,函数()实际上等于函数的返回值。当然,有些没有返回值,但已经执行了函数体内的行为,这个是根本,就是说,只要加括号的,就代表将会执行函数体代码。
以前就以为只要调用函数就必须要在函数名后面加括号,结果看了下文档对自己以前的认识完全推翻;
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
美丽的分割线
当函数作为参数被传时,不需要加括号,只需函数名当作指针传入,当需要时,会根据指针找到对应的函数来执行里面的代码
如果你在当作参数时,加上括号,那么,这个函数就会执行,而不是在传入函数需要的时候执行。
相关文章推荐
- lamp使用php处理上传文件,调用move_uploaded_file函数遇到目录写权限问题及解决过程
- 运用ORACLE的OO4O类库函数解决调用存储过程向远程数据库上传超过32K图片失败的问题
- 在C++中调用C写的函数(使用lex_yacc遇到的问题)
- 最近在ArcGIS Engine开发中关于调用gp工具过程出现COM 组件的调用返回了错误 HRESULT E_FAIL 错误的解决方法 和 学习oracle中遇到的一些问题总结
- 关于函数调用过程中的实参和形参问题
- js暂停函数,想做牛人的菜鸟遇到了问题。
- flash调用js函数,IE6不执行的问题
- 关于虚函数重载遇到的怪问题 -- 为什么经常调用了基类的函数
- ...后台代码中如何调用 javascript 函数的问题! - ASP.NET专题(按钮事件中调用JS文件中函数)
- chrome浏览器 iframe子页面调用父页面JS函数的问题
- JAVA+AXIS客户端调用Asp.net Web Service过程中遇到的问题及解决方法
- 关于 c#导出 excel 遇到只能在执行 Render() 的过程中调用 RegisterForEventValidation的问题
- js循环动态绑定带参数函数遇到的问题及解决方案[转]
- ajax读取页面调用JS函数问题
- 调用javascript遇到奇怪的“函数未定义”问题
- firefox下ExternalInterface.call调用js的alert函数问题
- sqlserver在调用存储过程中遇到convert转换失败问题的解决方法
- js循环动态绑定带参数函数遇到的问题及解决方案[转]
- loadrunner使用system()函数调用Tesseract-OCR识别验证码遇到的问题
- MATLAB调用OpenCV2.4库函数的全过程及问题解决