教程:http://javascript.ruanyifeng.com/

基本语法 - 函数

1、函数名的提升

JavaScript引擎将函数名视同变量名,采用function命令声明函数时,整个函数会被提升到代码头部。下面的代码不会报错。

f();
function f(){}

但是,采用赋值语句定义函数,JavaScript就会报错。

f();
var f = function (){}; // TypeError: undefined is not a function

如果同时采用function命令和赋值语句声明同一个函数,最后总是采用赋值语句的定义。

2、参数传递方式

JavaScript的函数参数传递方式是传值传递(passes by value),但是对于复合类型的变量来说,属性值是按址传递(pass by reference),也就是说,属性值是通过地址读取的。所以在函数体内修改复合类型变量的属性值,会影响到函数外部。

简单地理解,函数体内整体修改传递进来的复合类型变量,如数组、对象,是不会影响到函数外部,但修改属性值就会到函数外部。

var o = [1,2,3];

function f1(o){
o = [2,3,4];
}
f1(o);
console.log(o); // [1,2,3] function f2(o){
o[2] = 4;
}
f2(o);
console.log(o); // [1,2,4]

3、eval命令

eval没有自己的作用域,都在当前作用域内执行。

var a = 1;
eval('a = 2');

ECMAScript 5将eval的使用分成两种情况,像上面这样的调用,就叫做“直接使用”。另一种情况是,eval不是直接调用,而是“间接调用”,此时eval的作用域总是全局作用域。

var a = 1;

function f(){
var a = 2;
var e = eval;
e('console.log(a)');
} f(); //

基本语法 - 对象

1、检查变量是否声明

if(window.a) {...} // 不报错
if(window['a']) {...} // 不报错

这二种写法有漏洞,如果a属性是一个空字符串(或其他对应的布尔值为false的情况),则无法起到检查变量是否声明的作用。正确的写法是使用in运算符。

if('a' in window) {...}

2、查看所有属性

查看一个对象本身的所有属性,可以使用Object.keys方法。

var o = {
key1: 1,
key2: 2
}; Object.keys(o); // ["key1", "key2"]

3、with语句

with语句少数有用场合之一,就是替换模板变量。

var str = 'Hello <%= name %>!';

上面代码是一个模板字符串,为了替换其中的变量name,可以先将其分解成三部分'Hello ', name, '!',然后进行模板变量替换。

var o = {
name: 'Alice'
}; var p = [];
var tmpl = ''; with(o){
p.push('Hello ', name, '!');
}; p.join('') // "Hello Alice!"

上面代码中,with区块内部,模板变量name可以被对象o的属性替换,而p依然是全局变量。事实上,这就是很多模板引擎的实现原理。

标准库 - Date对象

1、Date.now()

now方法返回当前距离1970年1月1日 00:00:00 UTC的毫秒数(Unix时间戳乘以1000)。

如果需要更精确的时间,可以使用window.performance.now()。它提供页面加载到命令运行时的已经过去的时间,单位是浮点数形式的毫秒。

面向对象编程 - 概述

1、apply方法

将数组的空元素变为undefined

Array.apply(null, ["a",,"b"])
// [ 'a', undefined, 'b' ]

空元素与undefined的差别在于,数组的foreach方法会跳过空元素,但是不会跳过undefined。因此,遍历内部元素的时候,会得到不同的结果。

Javascript标准参考教程学习记录的更多相关文章

  1. Canvas API -- JavaScript 标准参考教程(alpha)

    Canvas API -- JavaScript 标准参考教程(alpha) Canvas API

  2. JavaScript 标准参考教程(alpha) 阮一峰

    JavaScript 标准参考教程(alpha)http://javascript.ruanyifeng.com/#introduction

  3. 记阮一峰---JavaScript 标准参考教程之标准库-Object对象

    在看到阮大神的-标准库-Object对象时 有个 类型判断类型 方法可能以后会用到.特此记录一下 4.3:toString()的应用:判断数据类型 Object.prototype.toString方 ...

  4. Javascript 标准参考教程

    http://javascript.ruanyifeng.com/grammar/array.html

  5. *JavaScript标准参考教程 - 阮一峰

    参考 页向对象编程的模式(继承&模块化)

  6. JavaScript 核心参考教程 内置对象

    这个标准基于 JavaScript (Netscape) 和 JScript (Microsoft).Netscape (Navigator 2.0) 的 Brendan Eich 发明了这门语言,从 ...

  7. 《JavaScript语言入门教程》记录整理:运算符、语法和标准库

    目录 运算符 算数运算符 比较运算符 布尔运算符 二进制位运算符 void和逗号运算符 运算顺序 语法 数据类型的转换 错误处理机制 编程风格 console对象和控制台 标准库 Object对象 属 ...

  8. 《JavaScript语言入门教程》记录整理:入门和数据类型

    目录 入门篇 js介绍 历史 基本语法 数据类型 概述 null 和 undefined 数值 字符串 对象 函数 数组 本系列基于阮一峰老师的<JavaScrip语言入门教程>或< ...

  9. 《JavaScript语言入门教程》记录整理:面向对象

    目录 面向对象编程 实例对象与 new 命令 this关键字 对象的继承 Object对象的方法 严格模式(strict mode) 本系列基于阮一峰老师的<JavaScrip语言入门教程> ...

随机推荐

  1. 为什么重写equals方法,还必须要重写hashcode方法

    一.equals方法和hashcode的关系 根据Object.hashCode的通用约定: 如果两个对象相同(equals方法返回true),那么hashcode也相等.(图1) 如果两个对象的ha ...

  2. ntoskrnl.exe导致蓝屏解决方法

    背景 博主电脑近段时间经常蓝屏,主要表现在开关机.重启等操作上: 使用 BlueScreenView 查看C:\Windows\Minidump下的bmp文件,关键信息如下: 解决方法 查阅网上的各种 ...

  3. Chrome Extension 记录

    传递选定元素到内容脚本 内容脚本不能直接访问当前选中的元素.但是,任何使用 inspectedWindow.eval 来执行的代码都可以在 DevTools 控制台和命令行的 API 中使用.例如,在 ...

  4. Sql Server2008忘记sa登陆密码

    Sql的sa登陆密码忘记解决方法: 语句执行的前提: 1.系统可以登陆进去(当不记得sa密码的时候,可以使用windows用户验证的方式进行登陆) 2.平时用sa登陆,点了记住密码但是不记得密码是多少 ...

  5. Chrome浏览器控制台报Refused to get unsafe header "XXX"的错误

    最近在调试后端下载的接口时在浏览器的控制台中发现了红色的错误信息,例如Refused to get unsafe header "XXX":前端是采用XMLHttpRequest对 ...

  6. 搜索字母a或A

    Amy觉得英语课实在是无聊至极,他不喜欢听老师讲课. 但是闲着也是闲着,不如做点什么吧?于是他开始数英语书里的字母a和A共出现了多少次. 费了九牛二虎之力终于数完了. 作为一名软件工程专业大学生,他觉 ...

  7. 如何在Windows上开启Ping或者禁止PING

    方法1:命令行模式 进入服务器后 点击 开始——运行 输入命令: netsh firewall set icmpsetting 8 这样就可以在外部ping到服务器了 非常简单实用! 同样道理,如果想 ...

  8. 二分-C - Pie

    C - Pie My birthday is coming up and traditionally I'm serving pie. Not just one pie, no, I have a n ...

  9. axios的基本用法与并发请求

    一.axios的基本用法 <router-link to="" class="a1" @click.native="logins"&g ...

  10. ASP.NET MVC模型绑定1

    一.模型绑定原理 模型绑定是指为Controller的Action方法的参数提供值的过程,例如我有一个名为Blog的实体类(准确的说是ViewModel),它有一个名为Title的属性,如果我在VIE ...