一、事件(例如:onclick)绑定的函数定义放在jsp前面和放后面没影响

二、

 $(function() {
function func(){};
})

onclick通过如下方式绑定事件到jsp中:onclick = "func();"

由于func()在函数中声明,是局部变量,onclick找不到func(),绑定失败。

三、

function func(){};

onclick = "func();"

这样绑定没有问题,因为func()此时是全局变量,不在任何函数中。

四、

func = function(){

};

onclick = "func();"

这样绑定也没问题,另一种函数定义方式,也不在任何函数中,属于全局变量。

五、

$(function() {
func = function(){ };
}); onclick = "func();"

这可以绑定成功,js中,在函数内部,不加var声明的变量是属于全局变量,所以这里func虽然放在函数中,却是全局变量,onclick可以正常触发。

六、

$(function {
var func = function() { };
}); onclick = "func();"

这绑定不成功,可以和情况五比较,func变量前加了var,变成了函数内部的局部变量,所以onclick访问不到func函数,不能触发。

七、全局和局部变量:

1、外部的为全局,内部的为局部变量。

2、加var为局部变量(在方法内),不加var为全局变量(当方法内有一次使用后)

<script type="text/javascript">
var golbe="global";
test();
function test(){
var local="local";
document.write(golbe);
document.write(local);
}
document.write(golbe);
document.write(local);
</script>

在上面的test方法内,当把local变量的var去掉后,local就变成了全局变量,但是在局部不使用local,则这个local作为全局是无效的。

为了验证这点,我把test方法内部唯一使用local变量的这句代码注释掉.发现在外部也打印不出来了。

总结:全局变量可以不声明var 函数内变量必须声明var,在定义全局变量时加或不加var关键字没什么影响;但在定义局部变量时如果不加var关键字javascript解释程序会将其解释为全局变量。

js 函数定义的两种方式以及事件绑定(扫盲)的更多相关文章

  1. js 函数定义的2种方式

      js 函数定义的2种方式 CreateTime--2018年3月29日18:36:14 Author:Marydon 方式一: /** * 函数式声明 */ function mode() { c ...

  2. js函数定义的三种方式

    1.函数声明语法 function sum(num1, num2){ return num1 + num2; } 2.函数表达式定义 var sum = function (num1, num2){ ...

  3. Js 类定义的几种方式

    提起面向对象我们就能想到类,对象,封装,继承,多态.在<javaScript高级程序设计>(人民邮电出版社,曹力.张欣译.英文名字是:Professional JavaScript for ...

  4. js实现继承的两种方式

    这是面试时面试官会经常问到问题: js的继承方式大致可分为两种:对象冒充和原型方式: 一.先说对象冒充,又可分为3种:临时属性方式.call().apply(): 1.临时属性方式: 当构造对象son ...

  5. scala函数定义的四种方式

    最近开始接触scala编程语言,觉得还是比较新的一个东西,虽然说和java比较像,是java的继承者,兼顾面向对象编程和函数式编程的优点,但是,终究是一个新的东西,还是要从最基本的学起.而这当中,函数 ...

  6. JS调用webservice的两种方式

    协议肯定是使用http协议,因为soap协议本身也是基于http协议.期中第二种方式:只有webservice3.5以后版本才可以成功 第一种方式:构造soap格式的body,注意加粗的黄色标识,比如 ...

  7. js数组清空的两种方式

    编辑器加载中...方式1,length赋值为0 这种方式很有意思, 其它语言如Java,其数组的length是只读的,不能被赋值.如 int[] ary = {1,2,3,4}; ary.length ...

  8. DataTables.js插入数据的两种方式

    一:采用数组的方式插入值 var tableData = []; ; ; $.each(data, function (i, d) { tableData.push([idxTable, d.stcd ...

  9. js函数声明的三种方式

    1.直接声明 function box(num1,num2){ return num1+num2;}alert(box(1,2)); 2.使用变量初始化 var box2 = function(num ...

随机推荐

  1. Effective java -- 1

    写博客我也不知道是不是一个好习惯,但是目前还不知道有什么其他更有效率的学习方法.现在的学习方法:看书,写博客.如果看明白一个东西,去写博客的话,这通常是一个浪费时间的行为,但是这个过程同样帮助自己二次 ...

  2. 一组带Tooltip提示框的CSS3图标按钮

    在线演示 本地下载

  3. 20165101 学习基础和C语言基础调查

    学习基础和C语言基础调查 技能学习心得 看了15级学长学姐丰富的技能之后,我感到很惭愧.我的课外技能可以说是很糟糕.唱歌的话,小时候还可以用假声唱一下,变声之后就是高音上不去,低音下不来.体育更是差劲 ...

  4. poj3301 Texas Trip【三分算法】

    题目地址:http://poj.org/problem?id=3301 简述:T组测试数据,每组线输入n,代表有n个点,接下来输入这n个点的坐标,坐标都是整数. 要求用一个最小的正方形覆盖所有的点,输 ...

  5. 《机器学习实战》学习笔记第十二章 —— FP-growth算法

    主要内容: 一.  FP-growth算法简介 二.构建FP树 三.从一颗FP树中挖掘频繁项集 一.  FP-growth算法简介 1.上次提到可以用Apriori算法来提取频繁项集,但是Aprior ...

  6. mac下搭建前端自动化工程

    好多年没有接触前端,发现前端行业发生了巨大的变化,很多新鲜术语,比如node.git.grunt.less.sass.预编译.自动化.模块化等等,看得让人晕头转向,不要担心,我会把这之前之后学习成果都 ...

  7. LINQ 学习路程 -- 查询操作 Skip SkipWhile Take TakeWhile

    Method Description Skip 跳过序列中指定数量元素,然后返回剩余序列 SkipWhile 只要满足条件,就跳过序列中的元素,然后返回剩余函数 Take 从序列的开头返回指定数量的连 ...

  8. linux shell编程(三) if 和 for

    if 条件判断: 单分支的if语句if 判断条件: then statement1fi双分支的if语句if 判断条件;then statement1 statementelse statement3f ...

  9. BZOJ 4650 [Noi2016]优秀的拆分:后缀数组

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4650 题意: 给你一个字符串s,问你s及其子串中,将它们拆分成"AABB&quo ...

  10. php数据结构课程---4、栈(是什么)

    php数据结构课程---4.栈(是什么) 一.总结 一句话总结: 栈(stack),它是一种运算受限的线性表.其限制是仅允许在表的一端进行插入和删除运算. 1.栈的链表实现? 定义node,设置属性d ...