《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

《Javascript秘密花园》学习笔记(下)相关推荐

  1. JavaScript闭包学习笔记

    闭包(closure)是JavaScript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 下面就是我的学习笔记,对于JavaScript初学者应该是很有用的. 一.变量的作用域 要理解 ...

  2. Javascript入门学习笔记

    JS入门学习笔记目录 1.JS简介 2.组成部分 3.特点 4.作用 5.JS三种添加方式 6.变量 7.数据类型 8.检测数据类型 9.逗号运算符 10.算术运算符 11.关系运算符 12.逻辑运算 ...

  3. Java Web--HTML、CSS、JavaScript详细学习笔记(内含丰富示例代码)

    ** Java Web–HTML.CSS.JavaScript学习笔记 ** HTML(Hyper Text Markup Language超文本标记语言):控制的是页面的内容,是由标签组成的语言,能 ...

  4. Python课程学习笔记 下

    笔记目录 Python 学习笔记 上 面向对象和异常 面向对象 基本理论 定义类 根据类实例化对象 属性相关 方法相关 类的补充 属性补充 方法相关补充 描述器 python对象的生命周期 内存管理机 ...

  5. javascript面向对象学习笔记(一)——继承

    最近在学习html5,玩了下canvas,发现js中很多的东西都不太记得了.翻了下笔记后发现还是去图书馆逛逛把,到借阅区找了我一直想看的<javascript design patterns&g ...

  6. JavaScript Reflect 学习笔记

    今天我们来学习JavaScript中的反射和ES6的Reflect对象. 什么是反射? 反射机制是指在程序运行期间能够获取自身的信息,比如一个对象能够在运行时就知道自己有哪些属性和方法. 在ES6之前 ...

  7. javascript深入浅出——学习笔记(六种数据类型和隐式转换)

    在慕课之前学过JS深入浅出,最近发现很多东西都记不太清楚了,再复习一遍好了,感觉这个课程真的超级棒的,做做笔记,再添加一些学习内容?随时补充 课程大纲 1.数据类型 2.表达式和运算符 3.语句 4. ...

  8. 前端JavaScript的学习笔记

    前端知识体系 想要成为真正的"互联网Java全栈工程师"还有很长的一段路要走,其中前端是绕不开的一门必修课.本阶段课程的主要目的就是带领Java后台程序员认识前端.了解前端.掌握前 ...

  9. JavaScript DOM 学习笔记(四)

    2019独角兽企业重金招聘Python工程师标准>>> 案例:将整个图片库的浏览连接几种安排在图片库主页里,在用户点击某个图片链接时才把相应的图片传送出来. 图片素材: 将图片素材 ...

  10. JavaScript红皮书学习笔记

    1.什么是javaScript JavaScript 历史回顾 JavaScript 是什么(实现) ​ JavaScript 是一门用来与网页交互的脚本语言,包含以下三个组成部分. ​ ECMASc ...

最新文章

  1. CSS实现元素居中原理解析
  2. [Pyhon疫情大数据分析] 三.新闻信息抓取及词云可视化、文本聚类和LDA主题模型文本挖掘
  3. 如何在ASP.NET 5和XUnit.NET中进行LocalDB集成测试
  4. 非你莫属 java全球排名_TIOBE:2018年5月全球编程语言排行榜
  5. 大数据之_数据采集Flume_Flume了解_学习内容介绍---Flume工作笔记002
  6. matlab简单分析其他类型滤波器(陷波尖峰梳状半带希尔伯特)
  7. DataSet数据导入到Excel
  8. web.xml文件中的web-app元素 部署
  9. asp教程一:创建 Active Server Page 页
  10. 数据助力防疫,疫情密切接触人员追踪算法赛期待你的加入
  11. linux计划任务失败如何排查原因
  12. AWS宣布计划在加拿大开设第二个区域
  13. Unity3D--学习太空射击游戏制作(四)
  14. 计算机电子表格课程导入,又到了每年此刻,教你把课程表导入日历
  15. UE4 LOD Screen Size
  16. 2023全网首发抖音标签检测程序源码+花800买的/最新版本
  17. PS-怎么用ps查看精灵图(雪碧图)的位置?
  18. 【Java中实现微信公众号模板消息推送】
  19. freeswitch hangup hook lua脚本处理
  20. 中华英才网裁员,五成员工可拿(N+3)*月薪的离职补偿

热门文章

  1. android动画 底部弹窗 效果
  2. ios sinaweibo 客户端(二)
  3. 网络安全隐患,中国应发展自已的核心技术
  4. Oracle10g BIGFILE表空间带来的好处
  5. C语言汇编-函数调用堆栈的过程
  6. Wireshark实战分析之DHCP协议(二)
  7. java中super和this_Java中this和super的用法总结
  8. Linux检测内存泄露的脚本
  9. mmap 系统调用 的使用
  10. 读写锁优先级的问题解决了