1. 语法

1.1 区分大小写

变量、函数名和操作费都区分大小写。

1.2 标识符

标识符指变量、函数、属性的名字,或者函数的参数。标识符按以下规则组合:

第一个字符必须是一个字母,下划线(_)或一个美元符号($)。

其他字符可以是字母、下划线、美元符号或者数字。

标识符采用驼峰大小写格式,也就是第一个字母小写,剩下的每个单词首字母大写,例如:

firstSecond

myCar

doSomethingImportant

1.3 注释

使用c风格的注释

//单行注释

/*




*/

1.4 严格模式

在顶部添加如下代码进入严格模式:

"use strict";

(此处不深究)

1.5 语句

ECMAScript中的语句以一个分号结尾,如果省略了分号,那么由解析器确定语句的结尾。

虽然语句结尾的分号不是必须的,但我们建议任何时候都不要省略他

加上分号可以避免很多错误(例如不完整的输入),开发人员也可以放心地通过删除多余的空格来压缩ECMAScript代码。加上分号也会在某些情况下增进代码的性能,减轻解析器的负担。

在条件控制语句中,即使代码块里只有一条语句也使用代码块。

if (test)           //有效但容易出错,不要使用
alert(test); if (test){ //推荐使用
alert(test);
}

2. 关键字和保留字

ECMA-262描述了一组具有特定用途的关键字,以及一组不能用作标识符的保留字

3. 变量

ECMAScript的变量是松散类型的,所谓松散类型就是可以用来保存任何类型的数据。换句话说,每个变量静静是一个用于保存值的占位符而已。使用var操作符定义变量(var是一个关键字),后跟变量名(即标识符)。

省略var操作符,可以在函数中创建全局变量:

function test(){
message = "hi"; //message为全局变量
}
test();
alert(message);

可以使用一条语句定义多个变量

var message = "hi",
found = false,
age = 29;

由于ECMAScript是松散类型的,因而使用不同类型初始化变量的操作可以放在一条语句中完成。

4. 数据类型

ECMAScript中有5中简单数据类型(也称为基本数据类型):Undefined,Null,Boolean,Number,String

还有一种复杂数据类型——Object,Object本质上是有一组无序的名值对组成的。

ECMAScript不支持任何创建自定义类型的机制,而所有值最终都将是上述6中数据类型之一。

ECMAScript具有动态性,因此没有再定义其他数据类型的必要了。

4.1 typeof操作符

对一个值使用typeof操作符可能返回下列某个字符串

"underfined"——如果这个值未定义

"boolean"——如果这个值是布尔值

"string"——如果这个值是字符串

"number"——如果这个值是数值

"object"——如果这个值是对象

"function"——如果这个值是函数

以下是几个例子:

var message = "some string";
alert(typeof message); //string
alert(typeof(message)); //string
alert(typeof 95); //number

这几个例子说明,typeof操作符的操作数可以是变量(message),也可以是数值字面量。注意,typeof是一个操作符而不是函数,因此例子中的圆括号尽管可以使用,但是不是必须的。

有些时候,typeof操作符会返回一些令人迷惑但是技术上却正确的值。比如,调用typeof null会返回"object"。因为特殊值"null"被认为是一个空的对象引用。

从技术上讲,函数在ECMAScript中是对象,不是一种数据类型。然而,函数也确实有一些特殊的属性,因此通过typeof操作符来区分函数和其他对象是有必要的。

4.2 Undefined类型

Undefined类型只有一个值,即特殊的Undefined。在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined,如:

var message;
alert(message == undefined); //true

字面值undefined的主要目的是比较。

包含undefined值的变量和尚未定义的变量是不一样的,例子:

var message;
alert(message);//underfined
alert(asnfoiasnfi);//报错

然而,对未初始化的变量执行typeof操作符会返回undefined值,对未声明的变量执行typeof操作符统一也会返回undefined值。

显示地初始化变量是明智的选择,这样,当typeof操作符返回"undefined"值时,我们就知道该变量是没有被声明,而不是没有初始化。

4.3 Null类型

Null类型是第二个只有一个值的数据类型,这个特殊的值是null。从逻辑关系看,null值表示一个空对象指针,所以typeof操作符检测null值会返回object

如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null而不是其他值。

这样一来,只要检测null值就可以知道相应的变量是否已经保存了一个对象的引用。

只要意在保存对象的变量还没有真正保存对象,就应该明确地让变量保存null值.

if (car != null){
//对car对象执行某些操作
}

undefined值是派生自null值的,因此ECMA-262规定对它们的相等性测试要返回true。

alert(null == undefined);   //true

4.4 Boolean类型

Boolean类型只有两个字面值:truefalse。这两个值和数字值不是一回事,true不一定等于1,false不一定等于0。

ECMAScript中所有类型的值都有与这两个Boolean值等价的值。调用转型函数Boolean(),如:

var message = "Hello world!";
var messageAsBoolean = Boolean(message);

下表给出各种数据类型以及其对应的转换规则。

数据类型 转换为true的值 转换为false的值
Boolean true false
String 任何非空字符串 " "(空字符串)
Number 任何非零数字值(包括无穷大) 0和NaN
Object 任何对象 null
Undefined undefined

这对理解流控制语句(如if语句)自动执行相应的Boolean转换非常重要:

var message = "Hello world!:;
if (message){ //自动转换
alert("Value is true");
}

4.5 Number类型

Number类型使用IEEE754格式来表示整数和浮点数值。

八进制字面值的第一位必须是0,十六进制字面值的前两位必须是0x,在进行算术计算时,所有八进制和十六进制表示的数值最终都将被转换成十六进制。

var intNum = 55;  //整数
var octalNum1 = 070; //八进制的56
var octalNum2 = 079; //无效的八进制,解析为79
var hexNum1 = 0xA; //十六进制的10
var hexNum2 = 0x1f; //十六进制的31

javascript高级程序设计第三章的一些笔记的更多相关文章

  1. JavaScript高级程序设计 第三章 基本概念

    ch3 基本概念 标签(空格分隔): JavaScript 语法 标识符 - 第一个字符必须是字母.下划线或美元 - 驼峰大小写格式 严格模式 ECMAScript5引入,定义了一种解析和执行模型.此 ...

  2. javascript高级程序设计第三章

    看后总结: 1.区分大小写 2.标识符是有字母下划线$开头,并有字母.下划线.数字.美元符号组成. 3.建议用驼峰法命名标识符. 4.注释: 单行:// 多行: /*   */ 5.严格模式: 在js ...

  3. Javascript高级程序设计 -- 第三章 -- 总结

    1.Javascript有几种数据类型 2.变量 Javascript有几种数据类型 JavaScript中有5种简单数据类型(也称为基本数据类型):Undefined.Null.Boolean.Nu ...

  4. JavaScript高级程序设计第三版.CHM【带实例】

    从驱动全球商业.贸易及管理领域不计其数的复杂应用程序的角度来看,说 JavaScript 已经成为当今世界上最流行的编程语言一点儿都不为过. JavaScript 是一种非常松散的面向对象语言,也是 ...

  5. 《JavaScript高级程序设计》——第二章在HTML使用JavaScript

    这章讲的是JavaScript在HTML中的使用,也就是<script>元素的属性.书中详细讲了async.defer.src和type四个<script>的属性. 下面是对第 ...

  6. JavaScript高级程序设计学习(三)之变量、作用域和内存问题

    这次讲的主要是变量,作用域和内存问题. 任何一门编程语言,都涉及这三个. 变量,比如全局变量,局部变量等,作用域,也分全局作用域和方法作用域,内存问题,在java中就涉及到一个垃圾回收的问题,由于ja ...

  7. JavaScript高级程序设计第三版-读书笔记(1-3章)

    这是我第一次用markdown,也是我第一次在网上记录我自己的学习过程. 第一章 JavaScript主要由以下三个不同的部分构成 ECMAScript   提供核心语言功能 DOM     提供访问 ...

  8. 《JavaScript高级程序设计第三版》——细碎知识痛点整理(第六章)

    面向对象的程序设计 对象是一组没有特定顺序的值6.1.1 属性类型ECMAScript中有两种属性:数据属性和访问器属性.1. 数据属性Configurable 表示能否通过delete删除属性从而重 ...

  9. 读Javascript高级程序设计第三版第六章面向对象设计--创建对象

    虽然Object构造函数或者对象字面量都可以用来创建单个对象,但是缺点非常明显:使用同一接口创建很多对象,会产生大量重复代码. 工厂模式  1 function CreatePerson(name,a ...

随机推荐

  1. 爬取知名社区技术文章_pipelines_4

    获取字段的存储处理和获取普通的路径 #!/usr/bin/python3 # -*- coding: utf-8 -*- import pymysql import gevent import pym ...

  2. VAssistX插件

    一.什么是VassistX? VassistX的全称是Visual Assist X,是whole tomato开发的一个非常好用的插件,可用于VC6.0及Visual Studio的各个版本(包括V ...

  3. 安装node.js和npm

    转载自https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/0014345014184 ...

  4. Eclipse运行Java简单实例

    运行eclipse前首先配置好JDK环境变量等  双击这句话可跳转配置环境变量详细步骤 运行eclipse软件 1.File菜单-New - project 2.Java Project - Next ...

  5. 快速用Markdown排版一篇文章

    前言 如果想先看下效果可以参见鄙人使用Markdown的排版的一篇文章--Markdown编辑效果. 本文会将每个设置在文内做示例. 本文不介绍完整的Markdown用法. 本文只简洁的介绍,使用Ma ...

  6. linux的8小时差问题解决

    下面是同步时间的解决方法: 1.vi /etc/sysconfig/clock #编辑文件 ZONE="Asia/Shanghai" UTC=false #设置为false,硬件时 ...

  7. Animations and transitions

    在交互式可视化中,有一个词叫reactive,指的是以可视化的方式来响应用户的行为,帮助用户进行可视化并理解其结果.这个很有用.那如何来实现这种交互呢?通过动画. 如果处理得当,动画可以展现出不错的可 ...

  8. javascipt中的DOM对象

    1.HTML中DOM对象的概念 HTML Document Object Model(文档对象模型) HTML DOM定义了访问和操作HTML文档的标准方法 HTML DOM把HTML文档呈现为带有元 ...

  9. ABP官方文档翻译 5.1 Web API控制器

    ASP.NET Web API控制器 介绍 AbpApiController基类 本地化 其他 过滤器 审计日志 授权 反伪造过滤器 工作单元 结果包装和异常处理 结果缓存 校验 模型绑定器 介绍 A ...

  10. 小白学Docker之Swarm

    承接上篇文章:小白学Docker之Compose,自学网站来源于https://docs.docker.com/get-started 系列文章: 小白学Docker之基础篇 小白学Docker之Co ...