JavaScript函数后面加不加括号的区别
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<button id="btn">按钮</button>
<script>
var e =document.getElementById("btn");
e.addEventListener("click",demo1) function demo1(){
alert("hello1")
}
e.addEventListener("click",demo2)
function demo2(){
alert("hello2")
}
</script>
</body>
</html>
e.addEventListener("click",demo2)中,demo2后面加了括号变成打开页面直接弹出对话框而不用去点击按钮,不加括号则是通过点击按钮才触发事件弹出对话框,我感觉这个问题是个挺常见且也有迷惑性的,也总结一下。
function Fun(){
return 5
}
var a = Fun;
var b = Fun();
首先定义了一个简单的函数,函数是一种叫做function引用类型的实例,因此函数是一个对象。对象是保存在内存中的,函数名Fun则是指向这个对象的指针。
var a = Fun,这相当于把函数名这个指针拷贝一份给变量a,函数本身并没有被复制。
但是如果在Fun后面加上括号,就相当于立即执行了,也就是b会直接获取到函数的返回值。
然后上面代码的问题是:
事件触发是要有用户进行某项操作才会通过事件监听器调用这个操作对应的某个函数。addEventListener()方法接受三个参数,其中第二个参数就是当事件被触发时应该执行的函数,如果没有事件被触发,那函数肯定不会被调用。如果加上括号,相当于不需要监听前面的事件就可以触发。
JavaScript函数后面加不加括号的区别的更多相关文章
- C++中创建对象的时候加括号和不加括号的区别
c++创建对象的语法有----- 1 在栈上创建 MyClass a; 2 在堆上创建加括号 MyClass *a= new MyClass(); 3 不加括号 MyClass *a = new My ...
- C++中创建对象的时候加括号和不加括号的区别(转)
c++创建对象的语法有----- 1 在栈上创建 MyClass a; 2 在堆上创建加括号 MyClass *a= new MyClass(); 3 不加括号 MyClass *a = new My ...
- Python调用函数加括号和不加括号的区别
Python调用函数加括号和不加括号的区别 # -*- coding: utf-8 -*- #!/usr/bin/env python # @Time : 2018/7/3 10:03 # @Desc ...
- 函数基础重点掌握内容:创建函数、return返回单个值、return返回多个值、函数名加括号与不加括号的区别
##比较两个数大小 #有参函数!!! def compare(s,t): if s > t: print(s) else: print(t) f=compare compare(1000,30) ...
- JS 中函数名后面加与不加括号的区别
a.onmouseover = fn1; a.onmouseout = fn2; function fn1(){ div.className = "erweima show"; } ...
- 【转】new对象时,类名后加括号和不加括号的区别
请看测试代码: #include <iostream> using namespace std; // 空类 class empty { }; // 一个默认构造函数,一个自定义构造函数 ...
- new对象时,类名后加括号与不加括号的区别
[1]默认构造函数 关于默认构造函数,请参见随笔<类中函数> 请看测试代码: 1 #include <iostream> 2 using namespace std; 3 4 ...
- 编译程序加不加 -lpthread 的区别【转】
转自:http://www.cnblogs.com/Swartz/articles/3939382.html 作者:Lokki 出处:http://www.cnblogs.com/Swartz/ 欢迎 ...
- self,和类实例化加不加括号的理解
# class Dog(object): # def talk(self): # print('汪汪~~~') # print(self) # self就是对象,默认将对象传递到类方法,self不需要 ...
随机推荐
- 用栈解决Largest Rectangle问题
一问题描述 Given n non-negative integers representing the histogram's bar height where the width of each ...
- Python GUI编程--Tkinter
今天看到了GUI编程,书上推荐用wxPython,去官网上看了看,发现Windows的最高支持到2.7,我用的是3.4版本,咋办,用自带的库--Tkinter呗,它是Python的默认GUI库,几乎是 ...
- Swift - mutating关键字的使用
转载自:http://www.jianshu.com/p/14cc9d30770a 感谢作者:此ID想了很久 Swift中protocol的功能比OC中强大很多,不仅能再class中实现,同时也适用 ...
- 根据用户IP获得所在城市
运行以下代码即可<html> <head> <meta http-equiv="Content-Type" content="text/ht ...
- Spring中使用Schedule调度
在spring中两种办法使用调度,以下使用是在spring4.0中. 一.基于application配置文件,配置入下: <bean id="jobDetail" class ...
- Python 10 —— 杂
Python 10 —— 杂 科学计算 NumPy:数组,数组函数,傅里叶变换 SciPy:依赖于NumPy,提供更多工具,比如绘图 绘图 Matplitlib:依赖于NumPy和Tkinter
- [UCSD白板题] Compute the Edit Distance Between Two Strings
Problem Introduction The edit distinct between two strings is the minimum number of insertions, dele ...
- mysql 函数(一)
1.ascii() 查询ascii值,多个字符的情况下,显示左边第一个字符的ascii值 SELECT ASCII("abc"); 等同于 SELECT ASCII("a ...
- CSS伪类选择器
一.CSS伪类选择器用于给某些选择器添加效果语法规则:选择器:伪选择器例:a:link {color: #FF0000} 未访问的链接 a:visited {color: #00FF00} 已访问的链 ...
- 在c++这片神秘的大陆上
在c++这片神秘的大陆上,有一个无往而不利的地下王国,据说其手段血腥残忍,却深得民心,因为,他们是侠,是剑胆琴心,诗肠酒骨的侠客,他们不知解决了多少疑难杂症,除去了多少问题漏洞,而他们的首领-> ...