博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《Javascript秘密花园》学习笔记(下)
阅读量:6229 次
发布时间:2019-06-21

本文共 1546 字,大约阅读时间需要 5 分钟。

《Javascript秘密花园》在线阅读

JS核心

在任何情况下我们都应该避免使用 eval 函数。99.9% 使用 eval 的场景都有不使用 eval 的解决方案。

JavaScript 有两个表示‘空’的值,分别是null与undefined,其中比较有用的是 undefined。undefined 是一个值为 undefined 的类型。

下面的情况会返回 undefined 值:

  • 访问未修改的全局变量 undefined。
  • 由于没有定义 return 表达式的函数隐式返回。
  • return 表达式没有显式的返回任何内容。
  • 访问不存在的属性。
  • 函数参数没有被显式的传递值。
  • 任何被设置为 undefined 值的变量。

null和其他语言的null不同,JS中的undefined才相当于其他语言的null。

null在 JavaScript 内部有一些使用场景(比如声明原型链的终结 Foo.prototype = null),但是大多数情况下都可以使用 undefined 来代替。

JavaScript 不是一个没有分号的语言,恰恰相反上它需要分号来就解析源代码。 因此 JavaScript 解析器在遇到由于缺少分号导致的解析错误时,会自动在源代码中插入分号。

由于JS的自动插入分号机制,建议绝对不要省略分号,同时也提倡将花括号和相应的表达式放在一行, 对于只有一行代码的 if 或者 else 表达式,也不应该省略花括号。

其他

使用 setTimeout 和 setInterval 来计划执行函数。setTimeout 只会执行回调函数一次,不过 setInterval - 正如名字建议的 - 会每隔 X 毫秒执行函数一次。

注意: setTimeout 的第一个参数是函数对象,一个常犯的错误是这样的 setTimeout(foo(), 1000), 这里回调函数是 foo 的返回值,而不是foo本身。 大部分情况下,这是一个潜在的错误,因为如果函数返回 undefined,setTimeout 也不会报错。

手工清空定时器

可以通过将定时时产生的 ID 标识传递给 clearTimeout 或者 clearInterval 函数来清除定时, 至于使用哪个函数取决于调用的时候使用的是 setTimeout 还是 setInterval。

var id = setTimeout(foo, 1000);clearTimeout(id);

setTimeout 和 setInterval 也接受第一个参数为字符串的情况。 这个特性绝对不要使用,因为它在内部使用了 eval。

注释

setTimeout() 方法

定义和用法

setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。

语法

setTimeout(code,millisec)
参数 描述
code 必需。要调用的函数后要执行的 JavaScript 代码串。
millisec 必需。在执行代码前需等待的毫秒数。

提示:setTimeout() 只执行 code 一次。如果要多次调用,请使用 setInterval() 或者让 code 自身再次调用 setTimeout()。

绝对不要使用字符串作为 setTimeout 或者 setInterval 的第一个参数, 这么写的代码明显质量很差。当需要向回调函数传递参数时,可以创建一个匿名函数,在函数内执行真实的回调函数。

另外,应该避免使用 setInterval,因为它的定时执行不会被 JavaScript 阻塞。

转载于:https://www.cnblogs.com/xihe/p/6138626.html

你可能感兴趣的文章
ansible安装tomcat_msm
查看>>
PL/SQL笔记
查看>>
hadoop-2.7.4+hbase-1.3.1+zookeeper-3.4.9搭建分布式集群环境
查看>>
阿里云通用计算平台诚聘人才啦!
查看>>
数据库事务管理:掺杂使用entityDao和jdbcTemplate时的问题
查看>>
第一篇 群雄并起——文本编辑器的武林大会
查看>>
部署 Office Communications Server 2007 R2 Enterprise Edition-Part01
查看>>
C# 中的INotifyPropertyChanged和ObservableCollection<T>
查看>>
查看文件信息的命令
查看>>
error CS0583: 内部编译器错误(0xc0000005 位于地址 5A18D31D 处): 可能的原因是“BIND”。...
查看>>
疯狂ios讲义之疯狂连连看游戏简介
查看>>
总结bash编程基础,引入函数结构化编程。
查看>>
redhat linux忘记登陆密码之解决办法
查看>>
RHEL 6 LAMP(一)
查看>>
Nginx负载均衡
查看>>
理解 virbr0 - 每天5分钟玩转 OpenStack(11)
查看>>
屡败屡战,攻克中项(系统集成项目管理师考试经历分享)
查看>>
SQL 2008 群集配置详尽攻略[2]--设置故障转移集群
查看>>
OSPF中使用完全次末节区域--total nssa
查看>>
unity3D与网页的交互---做项目的一点总结
查看>>