第一章 JavaSript概论

1.什么是JavaScript.

   具有面向对象能力的,解释型的程序设计语言。

2.JavaScript的特点.

  • 松散性
  • 对象属性
  • 继承机制(基于原型)

3.JavaScript核心

  • 核心(ECMAScript)
  • 文档对象模型(DOM)
  • 浏览器对象模型(BOM)

第二章 使用JavaScript


1.创建一张HTML页面



<!DOCTYPE HTML>

<html lang="en">

<head>

<meta charset="utf-8"/>

<title>The first page</title>

</head>

<body>

<h1>Hello World</h1>

</body>

</html>



2.<script>标签解析

  • defer    ----规定是否对脚本执行进行延迟,直到页面加载为止。
  • src       ----规定外部脚本文件的 URL。
  • type     ----规定脚本的 MIME 类型。
  • charset ----定义脚本中使用的字符编码。不支持。

3.JS代码嵌入的一些问题

    平稳退化,不支持javascript



<noscript>
您没有启用javascript.
</noscript>



第三章 语法,关键字保留字及变量

1.语法构成

  • 区分大小写
  • 标识符:变量,函数,属性的名字,或者函数的参数
  • 注释   //单行                         /*   */多行
  • 直接量(字面量)
  • 数组字面量和对象字面量的表达式也是支持的{x:1,y:2},{1,2,3,4,5}

2.关键字和保留字

  • 2.1 关键字

break

else

new

var

case

finally

return

void

catch

for

switch

while

continue

function

this

with

default

if

throw

delete

in

try

do

instanceof

typeof

 

 

 

  • 2.2 保留字

abstract

enum

int

short

boolean

export

interface

static

byte

extends

long

super

char

final

native

synchronized

class

float

package

throws

const

goto

private

transient

debugger

implements

protected

volatile

double

import

public

3.变量

  • 定义变量时要使用var操作符,后跟变量名,如下所示:

 



var message



  • 该变量可以用来保存任何值,像例子所示未经过初始化的变量,会保存一个特殊的值:undefined.
  • 有一点必须注意,即使用var操作符定义的变量将成为该变量的作用域中的局部变量。如果省略了var操作符,而表示创建的是一个全局变量。
  • 可以用一条语句定义多个变量,只要像下面这样把每个变量(初始化或者不初始化)用逗号隔开即可。
var message="hi",found=false,age=29;

 

 

第四章 数据类型

简单数据类型:Undefined,Null,Boolean,Number和String

复杂数据类型:Object     ,Object本质上是由一种无序的名值对组成的。JavaScript不支持任何创建自定义类型的机制,而所有的值最终将是上述6种数据类型之一。

1.typeof操作符

  • 对象或null  ----    object
  • 函数    ------   function(不是数据类型)
  • 未定义 ------   undefined
  • 数值,NaN  -----   number
  • 字符串   -----   string
  • 函数   -----   function

2.Undefined类型

  • 只有一个值,即特殊的undefined
  • 使用var声明变量,但没有对其进行初始化
  • 没有必要给一个变量赋值为undefined

 



var message;
console.log(message)  //undefinrd



 

 

3.Null类型

  • 只有一个值,即特殊的null
  • 它代表一个空的对象引用(指针)
  • 如果定义变量准备在将来用于保存对象,最好初始化
  • undefined是派生自null

 



var car=null;
console.log(typeof car); //object
console.log(null==undefined);  //true



 

 

4.Boolean类型

   以下情况的boolean值为false

  • 空字符串
  • 0和NaN
  • null
  • undefined

 



var found=true;
var lost=false;
console.log(typeof found);  //boolean
console.log(typeof lost);     //boolean

var message="Hello world!";
var messageAsBoolean=Boolean(message);
console.log(messageAsBoolean);   //true



  • 不同数据类型之间可以转换

数据类型          

转换为true的值        

转换为false的值         

Boolean

true

false

String

任何非空字符串

""(空字符串)

Number

任何非零数字值(包含无穷大)

0和NaN

Object

任何对象

null

Undefined

不适用

undefined

  • 这些转换规则对理解流控制语句(如if语句)自动执行相应的Boolean转换非常重要:
var message="Hello world";
if(message){
console.log("value is true");
}



 

 

5.Number类型

  • 关于NaN,它即非数值(Not a Number),是一个特殊的数值。这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。例如,在其他编程语言中,任何数值除以0都会导致错误,从而停止代码执行。但在javascript中,任何数值除以0会返回NaN,因此不会影响其他代码的执行。
  • NaN本身有两个非同寻常的特点。首先,任何涉及NaN的操作(例如NaN/10)都会返回NaN。其次,NaN与任何值都不相等,包括NaN本身。
Number.MIN_VALUE~~~Number.MAX_VALUE   //浮点数范围

console.log(NaN==NAN);  //false

console.log(isNaN(NaN));   //true
console.log(isNaN(10));    //false
console.log(isNaN("10"));  //false,可以被转换成10
console.log(isNaN(true));  //false,可以转换成1
console.log(isNaN("blue")); //true



6.String类型

  • String类型用于表示由0个或多个Unicode字符组成的字符序列,即字符串。字符串可以由双引号或单引号表示;
  • 字符串是不可改变的,一旦创建,它们的值就不能改变,要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值得字符串填充该变量。
  • 将一个值转化成字符串有两种方式。一种是每个值都有的toString()方法,这个方法唯一要做的就是返回相应的字符串表现。
var age=11;
var ageAsString=age.toString();
console.log(ageAsSring);    //字符串 “11”

var found=true;
var foundAsString=found.toString(); 
console.log(foundAsString);   //字符串“true”



7.Object类型

  • javascript中的对象其实就是一组数据和功能的集合,对象可以通过new操作符后跟要创建的对象类型的名称来创建。而创建Object类型的实例并为其添加属性和方法,就可以创建自定义对象。
var o=new Object();
o.name="jack";
o.age=12;
o.box=function(){
return "hhh"
}
console.log(o.name);   //"jack"
console.log(o.box());   //"hhh"



  • 同样可以使用new操作符来创建其他类型的值

 



var box1=new Number(9);
console.log(box1);   //9;

var box2=new Boolean(true);
console.log(box2);    //true

var box3=new String("kang");
console.log(box3);



 

 

 第五章 运算符

1.什么是表达式

  • 最简单的表达式是字面量或者变量名

2.一元运算符

  • 递增++和递减--
  • 前置和后置的区别

 



var box=100;
var age=++box;       //age的值为101;
var height=box--;      //height值为100;



 

  • 其他类型应用一元运算符的规则

 



var box="89";box++;            //90
var box="ab";box++;            //NaN
var box="false";box++;         //1;

var box={
   toString:function(){
       return 1;
    }
};box++;                            // 1



  • 加和减运算符
var box=100; +box;                             //100
var box="89";  +box;                              //100
var box=false;  +box;                              //0



3.算术运算符

 

ECMAScript 定义了 5 个算术运算符,加减乘除求模(取余)。如果在算术运算的值不是
数值,那么后台会先使用 Number()转型函数将其转换为数值(隐式转换)。

  • 加法
  • 减法
  • 乘法
  • 除法
  • 取余

4.关系运算符

用于进行比较的运算符称作为关系运算符:小于(<)、大于(>)、小于等于(<=)、大于等
于(>=)、相等(==)、不等(!=)、全等(恒等)(===)、不全等(不恒等)(!==)

  • 和其他运算符一样,当关系运算符操作非数值时要遵循一下规则:
  1. 两个操作数都是数值,则数值比较;
  2. 两个操作数都是字符串,则比较两个字符串对应的字符编码值;
  3. 两个操作数有一个是数值,则将另一个转换为数值,再进行数值比较;
  4. 两个操作数有一个是对象,则先调用 valueOf()方法或 toString()方法,再用结果比较;

 



var box = 3 > 2;              //true
var box = 3 > 22;             //false
var box = '3' > 22;           //false
var box = '3' > '22';         //true
var box = 'a' > 'b';          //false a=97,b=98
var box = 'a' > 'B';          //true B=66
var box = 1 > 对象;            //false,如果有 toString()或 valueOf()
                             则返回 1 > 返回数的值



  • 在相等和不等的比较上,如果操作数是非数值,则遵循一下规则:
  1. 一个操作数是布尔值,则比较之前将其转换为数值,false 转成 0,true 转成 1;
  2. 一个操作数是字符串,则比较之前将其转成为数值再比较;
  3. 一个操作数是对象,则先调用 valueOf()或 toString()方法后再和返回值比较;
  4. 不需要任何转换的情况下,null 和 undefined 是相等的;
  5. 一个操作数是 NaN,则==返回 false,!=返回 true;并且 NaN 和自身不等;
  6. 两个操作数都是对象,则比较他们是否是同一个对象,如果都指向同一个对象,则返
    回 true,否则返回 false。
  7. 在全等和全不等的判断上,比如值和类型都相等,才返回 true,否则返回 false。
var box = 2 == 2; //true
var box = '2' == 2; //true,'2'会转成成数值 2
var box = false == 0; //true,false 转成数值就是 0
var box = 'a' == 'A'; //false,转换后的编码不一样
var box = 2 == {}; //false,执行 toString()或 valueOf()会改变
var box = 2 == NaN; //false,只要有 NaN,都是 false
var box = {} == {}; //false,比较的是他们的地址,每个新创建对象的引用地址都不同
var age = {};
var height = age;
var box = age == height; //true,引用地址一样,所以相等
var box = '2' === 2 //false,值和类型都必须相等
var box = 2 !== 2 //false,值和类型都相等了

 

 

5.逻辑运算符