当前位置: 首页 > >

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函数不能重载(函数签名:即接受的参数的类型和数量);定义了两个名字相同的函数,则该名字只属于后定义的函数;



友情链接: