`
文章列表
相等与比较 JavaScript 有两种方式判断两个值是否相等。 等于操作符 等于操作符由两个等号组成:== JavaScript 是弱类型语言,这就意味着,等于操作符会为了比较两个值而进行强制类型转换。 "" == "0" // false 0 == "" // true 0 == "0" // true false == "fal ...
setTimeout 和 setInterval 由于 JavaScript 是异步的,可以使用 setTimeout 和 setInterval 来计划执行函数。 注意: 定时处理不是 ECMAScript 的标准,它们在 DOM (文档对象模型) 被实现。 function foo() {} var id = setTimeout(foo, 1000); // 返回一个大于零的数字 当 setTimeout 被调用时,它会返回一个 ID 标识并且计划在将来
为什么不要使用 eval eval 函数会在当前作用域中执行一段 JavaScript 代码字符串。 var foo = 1; function test() { var foo = 2; eval('foo = 3'); return foo; } test(); // 3 foo; // 1 但是 eval 只在被直接调用并且调用函数就是 eval 本身时,才在当前作用域中执行。 var foo = 1; function test() { var foo = 2; var bar = eval; bar ...
自动分号插入 尽管 JavaScript 有 C 的代码风格,但是它不强制要求在代码中使用分号,实际上可以省略它们。 JavaScript 不是一个没有分号的语言,恰恰相反上它需要分号来就解析源代码。因此 JavaScript 解析器在遇到由于缺少分号导致的解析错误时,会自动在源代码中插入分号。 var foo = function() { } // 解析错误,分号丢失 test() 自动插入分号,解析器重新解析。 var foo = function() { }; // 没有错误,解析继续 test()
undefined 和 null JavaScript 有两个表示‘空’的值,其中比较有用的是 undefined。 undefined 的值 undefined 是一个值为 undefined 的类型。 这个语言也定义了一个全局变量,它的值是 undefined,这个变量也被称为 undefined。但是这个变量不是一个常量,也不是一个关键字。这意味着它的值可以轻易被覆盖。
Array 构造函数 由于 Array 的构造函数在如何处理参数时有点模棱两可,因此总是推荐使用数组的字面语法 -[] - 来创建数组。 [1, 2, 3]; // 结果: [1, 2, 3] new Array(1, 2, 3); // 结果: [1, 2, 3] [3]; // 结果: [3] new Array(3); // 结果: [] new Array('3') // 结果: ['3'] // 译者注:因此下面的代码将会使人很迷惑 new Array(3, 4, 5); // 结果: [3, 4, 5] new Array(3) // 结果: [] ...
数组遍历与属性 虽然在 JavaScript 中数组是是对象,但是没有好的理由去使用 for in 循环 遍历数组。相反,有一些好的理由不去使用 for in 遍历数组。 注意: JavaScript 中数组
arguments 对象 JavaScript 中每个函数内都能访问一个特别变量 arguments。这个变量维护着所有传递到这个函数中的参数列表。 注意: 由于 arguments 已经被定义为函数内的一个变量。因此通过 var 关键字定义 arguments 或者将 arguments 声明为一个形式参数,都将导致原生的 arguments
闭包和引用 闭包是 JavaScript 一个非常重要的特性,这意味着当前作用域总是能够访问外部作用域中的变量。因为 函数 是 JavaScript 中唯一拥有自身作用域的结构,因此闭包的创建依赖于函数。 模拟私有变量 function Counter(start) { var count = start; return { increment: function() { count++; }, get: function() { return count; ...
构造函数 JavaScript 中的构造函数和其它语言中的构造函数是不同的。通过 new 关键字方式调用的函数都被认为是构造函数。 在构造函数内部 - 也就是被调用的函数内 - this 指向新创建的对象 Object。这个新创建的对象的 proto ...
函数声明与表达式 函数是JavaScript中的一等对象,这意味着可以把函数像其它值一样传递。一个常见的用法是把匿名函数作为回调函数传递对异步函数中。 函数声明 function foo() {} 上面的方法会在执行前被 解析(hoisted),因 ...
this 的工作原理 JavaScript 有一套完全不同于其它语言的对 this 的处理机制。在五种不同的情况下 ,this 指向的各不相同。 全局范围内 this; 当在全部范围内使用 this,它将会指向全局对象。
作用域与命名空间 尽管 JavaScript 支持一对花括号创建的代码段,但是并不支持块级作用域;而仅仅支持 函数作用域。 function test() { // 一个作用域 for(var i = 0; i < 10; i++) { // 不是一个作用域 // count } console.log(i); // 10 } 注意: 如果不是在赋值语句中,而是在 return 表达式或者函数参数中,{...} 将会作为代码段解析,
for in 循环 和 in 操作符一样,for in 循环同样在查找对象属性时遍历原型链上的所有属性。 注意: for in 循环不会遍历那些 enumerable 设置为 false 的属性;比如数组的 length属性。 // 修改 Object.prototype Object.prototype.bar = 1; var foo = {moo: 2}; for(var i in foo) { console.log(i); // 输出
  hasOwnProperty 函数 为了判断一个对象是否包含自定义属性而不是原型链上的属性,我们需要使用继承自 Object.prototype 的 hasOwnProperty 方法。
Global site tag (gtag.js) - Google Analytics