《JavaScript权威指南》学习笔记

JavaScript权威指南

一、javascript数据类型和变量

    javascript中相同的变量可以保存不同类型的数据,它是松散类型或动态类型,上下文环境将决定变量的数据类型。

1    标识变量

    变量命名限制:ECMAScript关键字和浏览器对象模型(BOM)中的内置关键字不可以被用作变量名。

2    基本类型

    Javascript有3种基本数据类型:字符串,数字以及布尔型;此外,Javascript提供了一些内建对象:String,Number和Boolean。基本数据类型是基本值的类型,而内建对象拥有内建属性和方法,内建对象会封装各自的基本类型并调用内建属性和方法。

String数据类型

    Javascript是松散类型的语言,字符串变量或者数字类型、布尔型便来能在声明时没有差别;字符串变量声明时把文本赋给String型变量,并且对便来能进行初始化之后才定义了变量的上下文。

    字符串文本是由单引号或双引号所引用的一系列字符;使用单双引号引用并未规定,只需要前后配对即可;若字符串中需要包含单引号或者双引号,在使用另一种引号进行引用即可,或者使用转义。

字符串转义

    字符串中除可以放入普通字符外,换可以放入转义字符。转义符是通过特定方式将一些特殊字符放在字符串中的模式;除此之外,还可把Unicode字符放在字符串中。

    \n      \\      \”      \u7231

字符串编码

    EncodeURI和encodeURIComponent方法可以将字符串从ASCII码或非ASCII码字符转换为URIencoding的字符;这两个函数也都有对应的解码方法decodeURI和decodeURIComponet。

字符串转换

    数字、布尔值等其他数据类型都可以转换为字符串,脚本引擎会根据上下文自动完成转换。

Boolean数据类型

    布尔值可以显式(使用Boolean函数将其他数据类型的值转换为布尔值)地赋给不同类型的变量;双重否定操作符可以用来显式地将数组或字符串转换为布尔值:

 varsomeValue = 0;

       varsomeBool = Boolean(someValue);

       varstrValue = “1”;

       varnumValue = 90;

var boolValue =!!strValue;

boolValue =!!numValue;

    toBoolean转换表请关注,其他类型转换为布尔值的转换规则。

Number数据类型

        Javascript中,Number数据类型时浮点数,可以包含小数部分,也可以没有小数部分;若没有小数部分,则将被当做十进制整数;若包含小数部分,可以使用指数形式表示。

        两个特殊的数字:正无穷大(Infinity)和负无穷大(-Infinity);数字类型上溢返回正无穷大,下溢返回负无穷大。

        除十进制外,换可以使用八进制和十六进制来表示数字;如果使用String函数将八进制或十六进制数字转换为字符串,则脚本引擎首先会将数字转换为十进制,然后再将结果转换为字符串。

         两个函数:parseInt(); 无论字符串是一个整数,还是浮点数,只返回数字的整数部分;从字符串中识别数字部分,直到遇到第一个非数字为止,如:”1.23e-2”,解析的结果是:1; 如果第一个字母不是数字,则直接返回NaN;此外,此函数第二个参数是要转换的数制,所以使用此函数可以实现数字各个数制之间的转换。

                       parseFloat(); 从字符串第一个数字开始识别数字部分,直到遇到第一个非数字为止,返回十进制表示的浮点型数值;如果第一个字母不是数字,则直接返回NaN

         除将字符串转换为Number外,Number函数也可以用来将其他数据类型转换为数字,包含浮点型的字符串将返回浮点数,包含整数的字符串将返回整数。还可以使用IsFinite函数判断变量的数值是否是无穷大,若是无穷大或者NaN,返回false,否则返回true。

       具体转换关系见转换表。

null和undefiled

        null变量是已定义的、值为null的变量:var nullString = null;

        如果便来能已经声明但是没有初始化,那么就是undefined变量: var updefString;

        如果声明了变量且赋予了初始值,则该变量就不是null或者undefined:var sValue = “”;

        可以使用条件语句判断变量值。

        可以使用isNaN()函数判断一个变量是否是NaN;

总结:0,null,NaN以及空字符串都是false,其他都是true.

常量

        常量是已命名数值,但不是变量;不可以重新赋值,声明时就必须完成初始化,一般声明为全局变量,名称为全大写。

const CURRENT_MONTH = 3.5;

二、操作符和语句

赋值语句

        var a,b=2;//  b 是undefined

算术操作符

二元操作符

        + - * / %   所有的二元操作符都可以用于字符串,但是字符串必须可以正确转换为数字;在进行计算前会先将字符串转换为数字

        如果运用于字符串:加法符号对字符串执行连接操作;如果将字符串和数字进行加法操作,也是执行连接操作。

一元操作符

++ --  -(负数)  

自操作符

位操作符

        位操作符将操作数当做32位的二进制数,然后按位操作:&   |      ^     ~

条件分支语句和程序流

    If else

    Switch

条件操作符

相等/相同操作符

        ==:比较变量值是否相等;会自动转换变量的数据类型为数字,然后再做比较。Switch语句中隐式地使用了此操作符用于判断“相等”。对应的:!=

        ===:用来判断变量的数值和类型,它只有在操作数的数值相同切类型相同的情况下才返回true。对应的:!==

关系操作符号

唯一的三元操作符

逻辑操作符

对象属性操作符

    .

高级语句

循环

    While/dowhile/for

三、javascript对象

    Javascript基本对象:第一种:与数据类型平行的封装对象;

                                   第二种:Math、Date、RegExp

                                   第三种:Array

基本数据类型对象

new关键字

        对于基本类型,在创建时若不使用new关键字,则只是创建基本类型;如果使用了new关键字,则创建了封装对象实例。

Var strName =“majq”;      //创建基本类型

        Var strName2 =String(“majq”); //创建基本类型

        Var strName3 =new String(“majq”);//创建封装对象类型

        创建基本类型后也可以直接使用封装对象的属性和方法,其实质是引擎会自动创建一个临时对象以供使用,在使用完毕之后会自动销毁此临时对象。

Boolean对象

        Boolean对象没有自己的属性,只有继承自Object的属性;Boolean对象实例有不同的方法,取决于初始值是false还是true,如果未对Boolean对象进行初始化,则默认初始值为false;

        可以使用默认初始化、0/1、true/false,””/非空字符串对boolean对象进行初始化,值同数据类型转换规则。

       Boolean对象只有两个继承方法:toString(),valueOf();

Number对象

Number静态属性:

       MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY

       正负无穷大用来判断溢出;而最大最小可表示数可用来获取可表示最大最小值。

Number实例方法

       ToExponential  以字符串形式返回数值的指数格式

       ToFixed         以字符串形式返回数值的固定位数格式

       toPrecision    以字符串形式返回数值的特定精确格式

       valueOf/toStringtoString方法可以传入数制参数,进行数制转换后输出

       toLocaleString返回与环境相关的数值格式

String对象

    属性:

        length

    方法:

        valueOf

        charAt

        charCodeAt

        concat    连接字符串

        split        分割字符串

        slice        返回字符串的某个片段

        substring,substr    返回子字符串

        match,replace,search         正则表达式匹配,替换和查找

        toLowercase,toUpperCase  大小写转换

正则表达式和RegExp

 var searchPattern = new RegExp(‘s+’); //显式创建正则表达式

 var searchPattern = /s+/;    //文字量方式创建正则表达式

RegExp

        实例方法

        Test 测试正则表达式与文本是否匹配

        Exec              返回一个数组

Date对象

Math对象

Array对象

        var newArray = new Array(‘1’,’2’);

        var newArray = [‘1’,’2’];

        在创建数组对象时,引擎会立即将基本数据类型转换为Array对象,并将结果赋给变量。

        可以根据固定元素个数创建数组,也可以不提供元素个数任意添加元素。

属性

        length

        方法

        Splice 在数组总插入或删除元素

        Slice 分割数组  不改变原来的数组,返回新数组

        Concat 连接不同的数组  不改变原来的数组,返回新数组

        Join  使用指定的分割符生成字符串

        Reverse 对数组执行倒序排列

队列

Array对象有4个用于维护队列和列表的方法:

       push:在最后一个元素后面加入元素,返回数组新的长度

        unshift   在第一个元素前面加入元素,返回数组新的长度

        pop:从数组最末尾移除一个元素,返回被移除的元素

        shift:从数组头部移除一个元素,返回被移除的元素

所以:

FIFO队列:先进先出

    加入在队尾(push),移除在队首(shift)

    加入在队首,移除在队尾

LIFO队列:先进后出

    加入在队尾,移除在队尾

    加入在队首,移除在队首

四、函数

        Javascript中,可以将函数赋给一个变量或数组元素,也可以将其作为一个参数传给一个函数调用。Javascript中函数有三种创建方法:声明式的/静态的、动态的/匿名的、字面量式的。

函数声明的方式

        参数中的基本类型变量传给函数的实际上是原始值,如一个字符串、一个布尔值、一个数字等;这也就意味着在函数中修改实际参数值,不会影响调用程序。

        对于传给函数的对象而言,传递的则是一个指向原始对象的引用,在函数中对这个对象的修改将会反映在调用程序中。

你可能感兴趣的:(JavaScript)