javascript高级程序设计第三章的一些笔记
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类型只有两个字面值:true和false。这两个值和数字值不是一回事,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高级程序设计第三章的一些笔记的更多相关文章
- JavaScript高级程序设计 第三章 基本概念
ch3 基本概念 标签(空格分隔): JavaScript 语法 标识符 - 第一个字符必须是字母.下划线或美元 - 驼峰大小写格式 严格模式 ECMAScript5引入,定义了一种解析和执行模型.此 ...
- javascript高级程序设计第三章
看后总结: 1.区分大小写 2.标识符是有字母下划线$开头,并有字母.下划线.数字.美元符号组成. 3.建议用驼峰法命名标识符. 4.注释: 单行:// 多行: /* */ 5.严格模式: 在js ...
- Javascript高级程序设计 -- 第三章 -- 总结
1.Javascript有几种数据类型 2.变量 Javascript有几种数据类型 JavaScript中有5种简单数据类型(也称为基本数据类型):Undefined.Null.Boolean.Nu ...
- JavaScript高级程序设计第三版.CHM【带实例】
从驱动全球商业.贸易及管理领域不计其数的复杂应用程序的角度来看,说 JavaScript 已经成为当今世界上最流行的编程语言一点儿都不为过. JavaScript 是一种非常松散的面向对象语言,也是 ...
- 《JavaScript高级程序设计》——第二章在HTML使用JavaScript
这章讲的是JavaScript在HTML中的使用,也就是<script>元素的属性.书中详细讲了async.defer.src和type四个<script>的属性. 下面是对第 ...
- JavaScript高级程序设计学习(三)之变量、作用域和内存问题
这次讲的主要是变量,作用域和内存问题. 任何一门编程语言,都涉及这三个. 变量,比如全局变量,局部变量等,作用域,也分全局作用域和方法作用域,内存问题,在java中就涉及到一个垃圾回收的问题,由于ja ...
- JavaScript高级程序设计第三版-读书笔记(1-3章)
这是我第一次用markdown,也是我第一次在网上记录我自己的学习过程. 第一章 JavaScript主要由以下三个不同的部分构成 ECMAScript 提供核心语言功能 DOM 提供访问 ...
- 《JavaScript高级程序设计第三版》——细碎知识痛点整理(第六章)
面向对象的程序设计 对象是一组没有特定顺序的值6.1.1 属性类型ECMAScript中有两种属性:数据属性和访问器属性.1. 数据属性Configurable 表示能否通过delete删除属性从而重 ...
- 读Javascript高级程序设计第三版第六章面向对象设计--创建对象
虽然Object构造函数或者对象字面量都可以用来创建单个对象,但是缺点非常明显:使用同一接口创建很多对象,会产生大量重复代码. 工厂模式 1 function CreatePerson(name,a ...
随机推荐
- Django_xadmin_应用外键搜索功能错误
问题: 当我在给某一张表加上外键搜索的时候,会出现 TypeError: Related Field got invalid lookup: icontains 问题原因: a 表关联 b表,也就是说 ...
- 1_mysql_认识
什么是数据库? -- 数据 -- 处理+存储 信息 -- 数据库 -- 存取数据 软件 本质是对文件系统的上层封装,通过软件去管理文件,管理数 ...
- 在Tomcat中采用基于表单的安全验证
.概述 (1)基于表单的验证 基于From的安全认证可以通过TomcatServer对Form表单中所提供的数据进行验证,基于表单的验证使系统开发者可以自定义用户的登陆页面和报错页面.这种验证方法 ...
- MS SQL 监控磁盘空间告警
这几天突然有个想法:希望能够自动监控.收集数据库服务器的磁盘容量信息,当达到一个阀值后,自动发送告警邮件给DBA,将数据库磁盘详细信息告知DBA,提醒DBA做好存储规划计划,初步的想法是通过作业调用存 ...
- 豹哥嵌入式讲堂:ARM知识概要杂辑(2)- 第一款Cortex-M处理器
1.天生荣耀:ARM Cortex-M处理器由来 ARM公司自2004年推出ARMv7内核架构时,摒弃了以往"ARM+数字"这种处理器命名方法(ARM11之前的处理器统称经典处理器 ...
- 【转】对GAMIT/GLOBK的基本认识
1.1 GAMIT/GLOBK软件可从网络上申请下载.该软件功能强大,用途广泛,一般包括精确定位,大气层可降水汽估计和空间电离层变化分析等.后两种用途只需要用到GAMIT模块,精确定位则还需要GL ...
- 关系类型字段 -- Django从入门到精通系列教程
该系列教程系个人原创,并完整发布在个人官网刘江的博客和教程 所有转载本文者,需在顶部显著位置注明原作者及www.liujiangblog.com官网地址. Python及Django学习QQ群:453 ...
- Django中模板的用法简介
1. 模板系统的介绍 Django作为一个Web框架,其模板所需的HTML输出静态部分以及动态内容插入 模板由HTML代码和逻辑控制代码构成 Django框架的模板语言的语法格式: {{var_nam ...
- 给php加速安装APC
说明:APC-3.1.13 适应于 php-5.4.27 下载: wget http://blog.xinfilm.com/softdir/APC-3.1.13.tgz tar -zxvf APC-3 ...
- SSH 面试题集锦
1. BeanFactory的作用是什么? [中] BeanFactory是配置.创建.管理bean的容器,有时候也称为bean上下文.Bean与bean的依赖关系,也是由BeanFactory ...