zoukankan      html  css  js  c++  java
  • 《Javascript秘密花园》学习笔记(下)

    《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 阻塞。

  • 相关阅读:
    webdav srs相关
    How To Configure WebDAV Access with Apache on Ubuntu 14.04
    ubuntu 编译lighttpd
    srs编译及推流测试
    Compile pciutils (lspci, setpci) in Windows x86,在 Windows x86 平台下编译 pciutils (lspci, setpci)
    mingw MSYS2 区别
    Qt之美(三):隐式共享
    Qt之美(二):元对象
    Qt之美(一):d指针/p指针详解
    C++的栈空间和堆空间
  • 原文地址:https://www.cnblogs.com/xihe/p/6138626.html
Copyright © 2011-2022 走看看