JavaScript Distilled 基础知识与函数

一、运算符

  

复制代码 代码如下:

  . [] () 属性存取及函数调用

  delete new typeof + - ! 一元运算符

  * / % 乘法,除法,取模

  + - 加法/连接,减法

  >= <= > < 不等式运算符

  === !== 等式运算符

  && 逻辑与

  || 逻辑或

  ?: 三元运算符

  二、语句:

  1.if语句

  

复制代码 代码如下:

  var dayOfWeek=0;

  if(day===6){

  }

  else if(dayOfWeek===0){

  }

  else{

  }

  2.switch语句

  

复制代码 代码如下:

  var dayOfWeek=0;

  switch (dayOfWeek){

  case 6:

  break;

  case 0:

  break;

  default:

  break;

  }

  switch语句将switch表达式的值和所有指定的Case表达式进行精确匹配(===)。当找到一个匹配时,执行匹配的case从句中的语句。如果没有找到任何匹配,则执行可选的default语句。

  3.while语句

  

复制代码 代码如下:

  var count=0;

  while (count<=10){

  count++;

  }

  4.do/while语句

  

复制代码 代码如下:

  var count=0;

  do{

  count++;

  }while (count<=10);

  5.for语句

  

复制代码 代码如下:

  for (var count=0;count<=10;count++){

  }

  6.for/in语句

  

复制代码 代码如下:

  var colors=["Red","Yellow","Blue"];

  for (var color in colors){

  }

  7.try/catch语句

  

复制代码 代码如下:

  try{

  }

  catch(e){

  }

  8.throw语句

  

复制代码 代码如下:

  throw{

  name:'ArgumentOutOfRangeError',

  message:'year must > 0'

  }

  9.return语句

  return "Red";

  return语句会使一个函数提前返回。它也可以指定要被返回的值。如果没有指定返回表达式,那么其值是undefined。

  三、类型:

  1.数字

  var value=1.0;

  JavaScript只有一个单一的数字类型。他在内部被表示为64位的浮点数。

  特殊数值:

  NaN 非数字的特殊值

  Infinity 无穷大的特殊值

  2.字符串

  var value="One";

  JavaScript字符串是一个由16位的Unicode字符组成的序列。字符串字面量可以被包围在单引号或双引号中。

  字符串转义:

  \" \' \\

  \b 退格符

  \f 换页符

  \n 换行符

  \r 回车符

  \t 制表符

  \uXXXX 由4位16进制XXXX指定的Unicode字符

  3.布尔值

  var value=true;

  布尔值只有2个值:true和false。

  下列值被当作假值:

  false

  null

  undefined

  空字符串''

  数字0

  数字NaN

  4.null

  var value=null; //null

  JavaScript中null是一个特殊的值,表示“无值”。

  5.undefined

  var value; //undefined

  JavaScript中undefined是一个特殊的值。在使用一个未声明的变量,或已声明但还未赋值的变量,以及并不存在的对象属性时,将返回undefined。

  6.对象

  

复制代码 代码如下:

  var car={

  brand:"Honda",

  color:"Red",

  run:function(){

  //run

  }

  };

  var value=car.brand;

  JavaScript中的对象是可变的键值集合。对象是属性的容器,其中每个属性都拥有名字和值。属性的名字可以是包括空字符串在内的任意字符串。属性值可以是除undefined值之外的任何值。

  

复制代码 代码如下:

  car.prototype.stop=function(){

  //stop

  };

  car.run();

  每个对象都连接到一个原型对象,并且它可以从中继承属性。原型连接在更新时是不起作用的。它只有在检索值的时候才被使用。

  模块化:

  

复制代码 代码如下:

  var App={};

  App.employee={

  name:"Joyce"

  }

  App.customer={

  name:"Jason"

  }

  7.函数

  

复制代码 代码如下:

  var add=function(a,b){

  return a+b;

  };

  add(1+2);

  JavaScript中函数就是对象。函数可以被定义在其它函数中。一个内部函数可以访问包围它的外部函数的参数和变量。这被称为闭包。

  闭包:

  

复制代码 代码如下:

  var car=function(brand,color){

  return {

  getBrand:function(){

  return brand;

  },

  getColor:function(){

  return color;

  }

  };

  };

  var myCar=car("Honda","Red");

  myCar.getBrand();

  函数化继承:

  

复制代码 代码如下:

  var mammal = function (spec) {

  var that = {};

  that.getName = function () {

  return spec.name;

  };

  that.says = function () {

  return spec.saying || '';

  };

  return that;

  };

  var myMammal = mammal({name: 'Herb'});

  var cat = function (spec) {

  spec.saying = spec.saying || 'meow';

  var that = mammal(spec);

  that.purr = function (n) {

  //purr

  };

  that.getName = function () {

  return that.says() + ' ' + spec.name + ' ' + that.says();

  };

  return that;

  };

  var myCat = cat({name: 'Henrietta'});

  8.数组

  var colors=["Red","Yellow","Blue"];

  var value=colors[0]; //"Red"

  数组和对象一样是键值集合。所不同的是,数组可以用整数做为属性名。数组还提供了一套非常有用的内置方法。

  每个数组都有一个length属性。length属性的值是这个数组的最大整数属性名加上1。它不一定等于数组里的属性的个数。

  9.正则表达式

  

复制代码 代码如下:

  var numberRegex=/^-?\d+(?:\.\d*)?(?:e[+\-]?\d+)?$/i;

  numberRegex.test(1.2); //true

  正则表达式分组:

  () 捕获型分组

  (?:) 非捕获型分组

  正则表达式转义:

  \\ \/ \[ \] \( \) \{ \} \? \+ \* \| \. \^ \$

  \f 换页符

  \n 换行符

  \r 回车符

  \t 制表符

  \uXXXX 由4位16进制XXXX指定的Unicode字符

  \d 匹配一个数字(等同于[0-9])

  \1 捕获型分组1的引用(\2依此类推)

  正则表达式类转义:

  \- \\ \/ \[ \] \^

  \b 退格符

  \f 换页符

  \n 换行符

  \r 回车符

  \t 制表符

  \uXXXX 由4位16进制XXXX指定的Unicode字符

  \d 匹配一个数字(等同于[0-9])

  正则表达式量词:

  ? 匹配0或1次(同{0,1})

  * 匹配0或多次(同{0,})

  + 匹配1或多次(同{1,})

  {n} 匹配n次

  {n,} 匹配至少n次

  {n,m} 匹配至少n次,但不能超过m次

  正则表达式标志:

  g 执行全局匹配(所有匹配)

  i 执行不区分大小写匹配

  m 执行多行匹配(^和$能匹配行结束符)