读书笔记--javaScript高级程序设计--第3章 基本概念

197 阅读5分钟

第三章 基本概念

3.1 语法

3.1.1区分大小写

3.1.2标识符

指的是变量、函数、属性的名字,或者函数的参数

  1. 第一个字符必须是一个字母,下划线(_)或者一个美元符号($)
  2. 其他字符可以是字母、下划线、美元符号或者数字。
  3. 惯例,采用驼峰命名法

3.1.3注释

  1. 单行
//单行只是

2.多行

/*
*多行
*注释
*/

3.1.4 严格模式

ECMAScript 5 引入

3.1.5语句

3.2关键字和保留字

关键字:

break do instanceof typeof case else new var catch finally 
return void continue for switch while debugger function this 
with default if throw deleted in try 

保留字:


3.3变量

ECMAScript的变量是松散类型的,也就是说变量可以保存任何类型的数据。

3.4数据类型

六种基本数据类型:Undefined、Null、Boolean、NUmber、String + Symbol(字符、ES6新增) 还有一种复杂数据类型:Object

3.4.1 typeof操作符

用来检测给定变量的数据类型,可能返回下列某个字符串

  1. “undefined” ---- 这个值未定义
  2. “boolean” ---- 布尔类型
  3. “string” ---- 字符串
  4. “number” ---- 数值
  5. “object” ---- 对象或者null
  6. “function” ---- 函数

3.4.2 undefined 类型

对于未经声明的变量,只能进行typeof操作来检测其数据类型(数据类型为undefined),其他操作会报错!

3.4.3 Null 类型

从逻辑学的角度,null值表示一个空对象指针

var car = null;
alert(typeof car);   //"object"

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

实际上undefined值是派生自null值的.

3.4.4 Boolean 类型

只有两个值: true 和 false ,要将一个值转换为对应的 Boolean值,可以调用转型函数 Boolean() 返回false的值有:

  1. 0
  2. NaN
  3. ''或 "" (空字符串)
  4. null
  5. undefined
  6. false

3.4.5 Number 类型

  1. 八进制字面值的第一位必须是0,然后是八进制数字序列(0~7),然后超出,前面的0省略,后面会当做十进制值解析.
  2. 十六进制前面是0x,后面是(0~9或者A~F)
  3. 计算时会转为十进制再计算.

一,浮点数值

浮点数值需要的内存空间是整数的两倍,会将一些浮点数值转换为整数值. 对于极大或者极小的数值,可以使用e表示法(科学计数法)

var floatNum = 3.125e7  //3.125 * 10^7 = 31250000
var floatNum = 3e-7   // 3*10^(-7) = 0.0000003

默认情况下,ECMAScript会将那些小数点后带有6个0以上的浮点数用e表示法表示.

注意: 浮点数值的最高精度是17位小数,浮点数值计算会产生舍入误差问题,这是使用基于IEEE754数值的浮点计算的通病

二,数值范围 内存限制,ECMAScript能够表示的最小数值保存在Number.MIN_VALUE 中--大多数浏览器中,这个值是5e-324;最大值保存在 Number.MAX_VALUE--在大多浏览器中这个值是1.7976931248623157e+308; 如果一个值超过这个范围,就会被转换为一个特殊的值 Infinity或者-Infinity

三, NaN 非数值 ( Not a Number) 用来表示一个本来要返回数值的操作数未返回数值的情况. 任何涉及NaN的操作,返回值都是NaN.

有一个isNaN()函数

四, 数值转换 三个函数可以把非数值转为数值:Number() / parseInt() / parseFloat()

  1. Number()

  2. parseInt() 常用 最好指定为十位数 parseInt('88',10) //值为 88

  3. parseInt() 字符串的第一小数点是有效的,第二个以后就是无效的.

3.4.6 String类型

String类型表示由零个或多个16位Unicode字符搜组成的字符序列.即字符串.

  1. 字符字面量
  2. 字符串的特点: 不可变,"改变"的过程其实是销毁和再创建.
  3. 转换为字符串 toString()

3.4.7 Object() 类型

对象其实就是一组数据和功能的集合.

var o = new Object()

Object 类型所具有的任何属性和方法也同样存在于更具体的对象中.

3.5 操作符

3.5.1 一元操作符

  1. 递增和递减操作符 ++ --
  2. 一元加和减操作符 + -

3.5.2 位操作符

很少用

3.5.3 布尔操作符

  1. 逻辑非 !
  2. 逻辑与 &&
  3. 逻辑非 ||

3.5.4 乘性操作符

  1. 乘法 *
  2. 除法 /
  3. 求模(余数) %

3.5.5 加性操作符

  1. 加法 +
  2. 减法 -

3.5.6 关系操作符

<
>
<=
>=

3.5.7 相等操作符

== 和 !=  先转换操作数,再比较.
=== 和 !==  不转换直接比较

3.5.8 条件操作符

条件?对执行 :错执行

3.5.9 赋值操作符 =

乘/赋值(*=)
除/赋值(/=)
模/赋值(%=)
加/赋值(+=)
减/赋值(-=)
左移/赋值(<<=)
有符号右移/赋值(>>=)
无符号右移/赋值(>>>=)

3.5.10 逗号操作符

逗号操作符多用于声明多个变量,或者用于赋值(用来赋值时返回最后一项,基本不这样用)

3.6 语句

3.6.1 if 语句

常用,没什么难的

3.6.2 do-while 语句

是一种后测试循环语句,至少会被执行一次

3.6.3 while 语句

前测试循环语句

3.6.4 for语句

前测试循环语句,常用于数组/对象的遍历

3.6.5 for-in 语句

是一种精准的迭代语句,可以用来枚举对象的属性 注意: 对象的属性没有顺利,通过for-in循环输出的属性名的顺序是不可预测的,可能因浏览器而异.

3.6.6 label 语句

3.6.7 break 和 continue 语句

3.6.7 with 语句

3.6.8 switch 语句

多个条件嵌套时使用.

switch (expression){
    case value: statement
        break;
    case value: statement
        break;
    case value: statement
        break;
    case value: statement
        break;
    default: statement
}

需要混合几种情形,要添加注释

switch(i){
    case 25:
    /*合并两种情景*/
    case 35:
        alert("25" or "35")
        break;    
    case 45:
        alert("45")
        break;   
    default:
        alert("other")
}

3.7 函数

通过函数可以封装任意多条语句,而且可以在任何地方任何时候调用执行. 可通过 return返回值,return后的语句不会执行.

3.7.1 理解参数

不介意传递进来多少个参数,也不介意参数是什么数据类型.

原因是:ECMAScript中的参数在内部是用一个数组来表示的.

在函数体内部,可以通过arguments 对象来访问这个参数,使用方括号语法

arguments[0]
arguments[1]
arguments[2]
arguments[3]

3.7.2 没有重载