使用window对象的setInterval方法,作为第一个参数传递的function必须在全局作用域中定义,否则会出现报错而无法执行。

具体如下:

在下面的代码中,试用jQuery方式在回调函数中使用window对象的setInterval方法,尝试实现每隔1秒重复执行func1()方法。
 
浏览器运行后报错:
报错显示调用的func1没有被定义。
 
原因分析:
    大前提:window对象的setInterval要求传递的方法参数必须是全局作用域的
  • func1 采用的方法定义格式, function 方法名(){...},这种方法只存在于局部作用域中。即只在回调函数中有效。
  • 而func2的定义方法,即方法名 = function(){...},在这种定义方法中,方法名的前面不能加var,否则一样无效。因为加了var之后,相当于将这个方法定义成了回调函数当中的一个局部变量。而没有var修饰的情况,则相当于定义了一个全局变量,所以面向全局作用域有效。
  • 而func3的书写格式与func1一样,但由于写在回调函数之外的脚本当中,即面向整个script脚本,所以也就相当于在全局作用域中有效。

window对象存在于全局当中,而非回调函数局部当中。和java传统代码当中,无法在一个方法中引用另一个方法中的局部变量同样道理?

关于setInterval方法中function的定义方法的更多相关文章

  1. JS function的定义方法,及function对象的理解。

    废话篇: 今天看到了Function的内容,各种晕,各种混淆有木有.简直是挑战个人脑经急转弯的极限啊.不过,最终这一难题还是被我攻克了,哇咔咔.现在就把这东西记下来,免得到时候又忘了就悲催了.... ...

  2. 003android初级篇之【转】Android开发中颜色的定义方法

    正好用到颜色的定义,但脑子里没有记住具体,转载一篇加强印象 1.使用Color类的常量,如: int color = Color.BLUE; // 创建一个蓝色 是使用Android提供的颜色 int ...

  3. jQuery中实现自己定义方法的扩展

    JQuery包装器提供了大量的方法.能够再页面中直接使用.可是.没有 不论什么一个库能够满足全部的需求.所以.JQuery库提供了丰富的扩展功能 .以禁用一组表单元素为例.看看怎么简单有效的在JQue ...

  4. prototype.js中Function.prototype.bind方法浅解

    prototype.js中的Function.prototype.bind方法: Function.prototype.bind = function() { var __method = this; ...

  5. Java-main方法中调用非static方法

    java的calss中,在public static void main(String[] args) { }方法中调用非static的方法:在main方法中创建该calss的对象,用对象调用非sta ...

  6. js中Function的apply方法与call方法理解

    最近在使用jQuery的$.each方法时很,突然想到$.each($('div'),function(index,entity){});中的这个index和entity是哪冒出来的,而且可有可无的, ...

  7. js中数组的定义方法及注意事项(转)

    1.数组的创建 var name= new Array(); //创建一个数组 name[0]="zhangsan";   //给数组赋值 name[1]="lisi&q ...

  8. Python中的函数定义方法

    def test(x): "hjkasgd" x += 1 return x def——定义函数的关键字 test——函数名 ()——内可定义形参 ""——文档 ...

  9. 初始化JQuery方法与(function(){})(para)匿名方法介绍

    一.初始化JQuery对象 DOM加载完成时运行代码 1.$(document).ready(function(){ 全写 // 在这里写你的代码... }); 2.jQuery(function() ...

随机推荐

  1. docker学习:docker命令

    帮助命令 自验证 docker version 详情信息 docker info 获取帮助 docker --help 镜像命令 列出本例主机上的镜像 docker images [OPTIONS] ...

  2. SpringCloud集成Security安全(Eureka注册中心)

    1.说明 为了保护注册中心的服务安全, 避免恶意服务注册到Eureka, 需要对Eureka Server进行安全保护, 本文基于Spring Security方案, 为Eureka Server增加 ...

  3. 大厂必问的Java集合面试题

    本文目录: 常见的集合有哪些? List .Set和Map 的区别 ArrayList 了解吗? ArrayList 的扩容机制? 怎么在遍历 ArrayList 时移除一个元素? Arraylist ...

  4. AP原理与最终一致性 强一致性 弱一致性

    转载自:http://www.blogjava.net/hello-yun/archive/2012/04/27/376744.html https://blog.csdn.net/c28905453 ...

  5. Launch agent by connecting it to the master

    Jenkins Node 是 Windows, Jenkins Server 在 Linux C:\JenkinsAgent\start_jenkins_agent.bat java -DSoftKi ...

  6. Java8的stream用法整理

    map 1 直接获取对象的值 this.categoryMapper.selectByIdList(ids).stream().map(Category::getName).collect(Colle ...

  7. layui父表单获取子表单的值完成修改操作

    最近在做项目时,学着用layui开发后台管理系统. 但在做编辑表单时遇到了一个坑. 点击编辑时会出现一个弹窗. 我们需要从父表单传值给子表单.content是传值给子表单 layer.open({ t ...

  8. 【Java常用类】两个Date类

    两个Date类 java.util.Date类 两个构造器的使用 构造器一:Date():创建一个对应当前时间的Date对象 构造器二:创建指定毫秒数的Date对象 两个方法的使用 toString( ...

  9. 记一次 .NET 某药品仓储管理系统 卡死分析

    一:背景 1. 讲故事 这个月初,有位朋友wx上找到我,说他的api过一段时间后,就会出现只有请求,没有响应的情况,截图如下: 从朋友的描述中看样子程序是被什么东西卡住了,这种卡死的问题解决起来相对简 ...

  10. [STM32F10x] 从零开始创建一个基于标准库的工程

    硬件:STM32F103C8T6 平台:MDK-AMR V4.70 1.创建一个Keil uVision 的工程 要点:相同类型的源文件放在一起以便于管理       2.添加标准库源文件 3.添加几 ...