JavaScript高级程序设计学习笔记——基本概念

一、语法

1、区分大小写;

2、标识符,即变量、函数、属性的名字,或者函数的参数,按照下面格式规则组合:

  • 第一个字符必须是字母/下划线/$;(不可以是数字)

  • 其它字符可以是字母、下划线、$或者数字

      ECMAScript标识符采用驼峰大小写格式;不能把关键字、保留字、true、false和null用作标识符;

3、注释:

      //单行注释;

      /*

      *

      */多行注释(块级)

4、ECMAScript5中引入了严格模式,它是为了定义一种不同的解析与执行模式,一些不确定的行为得到处理,一些不安全操作也会抛出。

5、语句:

  • 结尾用分号;

  • 通过删除空格可压缩代码;

  • 代码块放在{}中。

二、关键字和保留字

let、yield是第五版新增保留字,关键字和保留字不可用于标识符。

三、变量

  • ECMAScript的变量是松散型,可以用来保存任何数据类型,不用声明变量的类型

  • 定义变量用var操作符,其定义的变量是该变量的作用域中的局部变量,当函数被调用时,就会创建该变量,并为其赋值,而此后,该变量会立即被销毁

  • 省略var则会变为全局变量,即可以在函数外部的任何地方访问;

  • 可用逗号分隔多个变量,用同一个语句定义;

四、数据类型

1、5种基本数据类型:Undefined、Null、Boolean、Number、String;

      1种复杂数据类型:Object(本质上是由一组无序的名值对组成);

      所有值最终都将是6种之一。

2、检测给定变量的数据类型——typeof:

      返回结果为下面的一种字符串:

  • “undefined”——该值未定义;

  • “boolean”——该值是布尔值;

  • “string”——该值是字符串;

  • “number”——该值是数值;

  • “object”——该值是对象或null;(null被认为是一个空的对象引用)

  • “function”——该值是函数;(函数其实是一种对象,不是一种数据类型,而函数也确实有一些特殊属性,       因此通过该操作符来区分函数和其他对象

3、Undefined类型:

       只有一个值的数据类型——undefined,在使用var声明变量后但未对其初始化,则该变量值为undefined,但对未声明的变量,只能执行typeof一项操作,返回值仍为undefined。

4、Null类型:

       只有一个值的数据类型——null,其表示一个空对象指针,用typeof检测时返回object;undefined派生自null;

       alert(null == undefined);//true

       alert(null === undefined);//false

       只要意在保存对象的变量还没有真正保存对象,就应该明确的让该变量保存null值,这样体现null作为空对象指针,而且区分于undefined;

5、Boolean类型:

      有两个值——true、false,但true并不一定等于1,false并不一定等于0;

      将一个值转换为其对应的Boolean值,调用转型函数Boolean():

      如果省略 value 参数,或者设置为 0、-0、null、""、false、undefined 或 NaN,则该对象设置为 false。否则设置为 true(即使 value 参数是字符串 "false") ;

6、Number类型:

      浮点数值:必须包含一个小数点,且小数点后面必须至少有一个数字。

      NaN:

                NaN即非数值,是一个特殊的数值,该数值用于表示一个本来要返回数值的操作数未返回数值的情况。

    特殊点:

                a、任何涉及NaN的操作都会返回NaN

                b、NaN与任何值都不想等,包括NaN本身,alert(NaN == NaN);//false

    isNaN()函数:

              用于确定该参数是否“不是数值”。首先会尝试将该值转换为数值,若可以转换为数值,则返回false;所有不能被转换成数值的值都会返回true。

    数值转换:

          Number()函数——可用于任何数据类型;parseInt()、parseFloat()——将字符串转为数值;

           parseInt():处理整数时常用,忽略字符串前面的空格,直到找到第一个非空格字符,若第一个字符不是数字或者负号,则函数返回NaN,若第一个是则解析第二个字符直至遇到非数字字符,小数点也不是 

           数字字符。现在函数多通过提供第二个参数来表示使用多少进制,例如:var num= 

           parseInt("0xAF",16);或者忽略0x。

          parseFloat():该函数与parseInt()的区别为,它是遇见一个无效的浮点数字字符为止,第一个小数点是有效的,第二个则无效;另外,它始终忽略前面的零,并且只解析十进制。

7、String类型:

       由零或多个字符组成的字符序列,用双或单引号表示。

       转换为字符串:

  • toString():除了null和undefined之外,都可以用该方法返回相应值的字符串。如果括号内传入“输出数值的基数”这个参数,则可以按照相应的基数进行转换为对应的字符串值。

  • String():可以转换null——>"null",undefined——>"undefined";其余同toString()。

8、Object类型:

      Object是所有对象的基础,该类型是所有它的实例的基础,对象可以通过new操作符后跟要创建的对象类型的名称来创建:var o = new Object();

五、操作符

1、 递增、递减操作符:++/ --

      一元加和一元减操作符:一元加以一个加号表示,放在数值前面,对数值不会产生任何影响:var num=25;num=+num;//仍未25

      一元减用于表示负数::var num=25;num=-num;//-25

      位操作符:NOT  OR   AND   XOR    左移   有/无符号右移

      布尔操作符:逻辑非!:现将其转换为布尔值再求其反;

      逻辑与&&:有一个不是布尔值的情况,逻辑与的操作就不一定返回布尔值,逻辑与属于短路操作,第一个操作数能够决定结果就不会再对第二个操作数求值;

      逻辑或||:于逻辑与相似;

      乘性操作符:* 、/、 %;

      加性操作符:+、-;

             +:如果两操作符都是数值则直接加;如果有一个是字符串,另一个则转换成字符串,然后拼接,若都是字符串则直接拼接;

              -:如果两操作符都是数值则直接减;如果有一个不是数值,则将其转换为数值后再减法运算,如果转换为NaN则结果直接为NaN;

      关系操作符:<、>、<=、>=;在比较数值和字符串时,字符串会被转换成数值,再与另一个数值比较,任何操作数与NaN进行比较都是false。

      相等操作符:先转换再比较 ==:

                         null==undefined//true;NaN==NaN//false

      全等操作符:不转换直接比较:null===undefined//false;

      条件操作符:variable=(expression)? true_value:false_value;

      赋值操作符:=/*=/%=......

      逗号操作符:用于声明多个变量;用于赋值:操作符返回表达式的最后一项:var num =(5,1,4,6);//num = 6

六、语句

      if;

      do --while;

      while;

      for;

      for-in:用来枚举对象属性:for(property in expression) statement;该过程会将所有属性都枚举一遍,如果对象的变量值为null或undefined则会报错。

      label:在代码中添加标签,该标签可由break语句和continue语句引用,加标签的语句一般都要与for语句等循环语句配合使用。

      break:立刻退出循环,强制继续执行循环后面的语句;

      continue:立即退出循环,但退出循环后会从循环的顶部继续执行;

                     break和continue语句结合label时,会返回代码中特定的位置,这种联合使用的情况多发生在循环嵌套的情况下;

      with:将代码的作用域设置到一个特定的对象中:with (expression)statement;在严格模式下不允许使用with语句;

      switch;

七、函数

  •  使用function关键字来声明,后跟一组参数以及函数体;

  • 函数可以通过函数名来调用,后面要加上圆括号和参数;

  • 任何函数在任何时候都可以通过return语句后跟要返回的值来实现返回值,执行完return后会立即停止并退出函数,因此位于其后的语句都不会被执行;

  • 参数可以多个,数据类型也不限制,参数在内部是用一个数组来表示的,函数接收到的始终都是这个数组,而不会关心数组中包含哪些参数,在函数体内可以通过arguments对象来访问这个参数数组,从而获取传递给函数的每一个参数;

  • arguments对象与数组类似,arguments[0]表示第一个元素,它的length属性可以确定传递进来多少个参数;

  • 没有重载:由于不存在函数签名的特性,从而ECMAScript函数不能重载(函数签名:即接受的参数的类型和数量);定义了两个名字相同的函数,则该名字只属于后定义的函数;

你可能感兴趣的:(学习笔记)