JAVASCRIPT高程笔记-------第三章 基本概念

3.1  语法:

  1、区分大小写    

  2、标识符  就是指变量、函数、属性得名字    规范: 第一个字符必须是字母、下划线或美元符号       不能使用保留字作为标识符

  3、注释  单行注册 “//”  多行 “/**/”

  4、严格模式  在ECMAScript5 中引入了严格模式的概念,严格模式是为javaScript定义了一种不同的解析与执行模型   使用方式在脚本顶部  标注 “use strict”

  5、语句  虽然JavaScript中并未强制要求用分号结尾,但建议在每一个语句后添加分号符进行结尾 

3.2  关键字和 保留字

  1、关键字    break、case、catch、continue、debugger*、default、delete、do、else、finally、for、function、if、in、instanceof、new、return、switch、this、throw、try

        typeof、var、void、while、with

  2、保留字  abstract、boolean、byte、char、class、const、debugger、double、enum、export、extends、final、float、goto、implements、import、int、interface、

         long、native、package、private、protected、public、short、static、super、synchronized、throws、transient、volation

3.3  变量

  var message ;   声明一个message的变量,该变量可以用来保存任何值;(未初始化的变量会保存一个特殊值“undefined”)

  var  temp="hello" ; 声明了一个变量temp 并且赋值了“hello” 

3.4  数据类型  

  ECMAScript中有5种简单数据类型: Undefined、Null、Boolean、Number和string,以及一种复杂类型——Object;

                    Object本质是由一组无序的名值组成,不支持任何创建自定义类型的机制、所有值最终都是上述类型之一!

                     typeof操作符   返回对象的类型    使用方法   ①: typeof(任意对象)  括号亦可以不加       说明 typeof(null) 会返回 object ,

  一、Undefined类型 只有一个值“undefined”  在声明变量后未初始化的值就是undefined,对未声明或未初始化的值 进行typeof操作都是返回 undefined

  二、Null类型  它同样只有一个值的类型 唯一的取值是“null”    null表示一个空指针对象   因此   undefined == null   为true     但是  undefined === null 会返回false

  三、Boolean类型,取值为“true ” 或者 “false” ; 在ECMAScript中所有的数据类型都可以通过Boolean(data) 函数转化为boolean值,undefined转化后为false  转化后为true说明 :           

                         string 类型 非空的值 ,Number非零的值 ,object 非null值

  四、Number类型,在ECMAScript中采用IEEE754格式来表示整数与浮点数值(双精度数值)  8进制的数值表示:示例 “07”  第一位必须是零然后是八进制数列(0~7);

          当后面的数值超过八进制数列那么将会被当作十进制处理  ;    十六进制:必须以0x开头后面为(0~9、a-f)结尾; 八进制和十六进制数值在进行计算时统一转化为十进制数进行计算;

    a、浮点数表示一个数值里面必须包含一个小数点  例如“1.1” ; 浮点数的计算会存在精度问题   0.1 +0.2  != 0.3而是0.30000000000000004   

    b、数值范围: 最小值  Number.MIN_VALUE  (5e-324) ,最大值 Number.MAX_VALUE(1.7976931348623157e+308) ,超过这个值时会转化特殊的Infinity值,负数则为负无穷

    c、NaN:非数值   任何数除以0 都会返回NaN  , 可以通过isNaN函数来判断是否为“非数值”   示例 : isNaN(NaN) ==true   isNaN(10) ==false  isNaN('10')==false 

      isNaN('hello')==true   isNaN(true)==false  说明参数为string类型时,若string类型能转化为Number类型 那么返回false,否则为true,boolean类型可以转化为0和1因此也

                      会返回false

    d、数值转化函数 

      1、Number()    转化规则:

          参数为boolean类型时,true和false的值转化后分别为1和0 ;  参数为 Number类型、只是简单的传入和返回

          参数为null值    返回 0           参数为undefined  返回NaN    

          参数为string类型时      ①字符串只包含数字,则转化为十进制数据  并且忽略前置0  示例  ‘000001’ 转化后为 1   ‘000000’ = 转化后为0

                     ②字符串只包含浮点数,则转化为浮点数    忽略前置0   示例  ‘1.1’  转化后  1.1

                     ③字符串为十六进数据  则转化同等的十六进制数据

                     ④字符串为空  转化为0

                     ⑤字符串包含除上述格式之外的字符  转化为 NaN

           参数为对象时   则先调用对象的ValueOf()方法,然后根据上述规则转化,若转化的结果为NaN ,则调用对象的toString()方法;

                  再次按照上述规则转化

      2、parseInt() : 转化规则   采用依次解析的方式 并且忽略字符串前面的空格直到找到第一个非空字符,如果第一个字符不是数字或者负号则返回NaN,

                  若第一个解析为数值,则继续解析后续字符,直到解析完成; 在解析后续遇到非数值字符,那么会忽略后续字符 返回之前解析的数值

                  示例:  parseInt('10blue') = 10   ;  parseInt('2.2') = 2  忽略掉浮点数中间的小数点及后续字符      

                  为了避免歧义:可以在参数后面传入 进制 标识按指定进制解析   示例: parseInt('oxff',16)  指定16进制的方式解析  

      

      3、parseFloat()  与parseInt唯一的区别是在解析到第一个小数点时会继续解析,直到遇上非数值字符   示例:parseFloat(’2.3.5‘)=2.3     parseFloat(2.2test)=2.2  

 

  五、String类型  :用于表示由零个或多个Unicode字符组成的字符序列,字符串可以使用单引号或者双引号表示

    1、字符字面量     例如“abcd”     转义序列  ' ' 换行 、' '制表符  '' 空格  ' '回车    转义字符在字符串中的任何位置都会被作为一个字符解析

    2、字符串特点    在ECMAScript中 字符串是不可变的,也就是说创建一个字符串后它的值无法改变;

    3、转化为字符串 除了 undefined和null 以外 所有的类型 都可以通过toString()方法将其转化为字符串  ,Number类型可以传递进制参数 返回指定进制数值的 字符串形式 

  六、Object类型: ECMAScript中的对象其实是一组数据与功能的集合 ,对象可以通过new操作符跟要创建的类型名称来创建 !示例: var o=new Object();

          Object类型所有的任何属性和方法也同样存在于更具体的对象中,简单理解 (类似于java中的java.lang.object对象)

       Object实例都拥有以下属性和方法

          Constructor :保存着用于创建当前对象的函数

          hasOwnProperty(propertyName):检测实例对象中是否包含指定的属性      

          isPrototypeOf(object) :检测实例对象是否是另外一个对象的原型

          propertyIsEnumerrable:检测指定的属性 是否能使用for-in语句进行遍历

          toString()  返回对象的字符串表示    valueOf()  通常于toString()方法返回一致

 

3.5操作符 

  一、一元操作符  :   只能操作一个值的操作符被叫做一元操作符     递增++ 、递减--      ①在操作数前面   先递增或递减后 再使用操作数   

              ②在操作数后面,先使用操作数值,然 后再将操作数递增或递减

  二、位操作符   按位非not  操作符 '~'表示    执行结果就是返回值数值的反码  

         按位与 And    操作符 '&'表示  执行结果 是将两个数值的每一位对齐按照指定规则执行and操作

                当两个数值的指定位的值都为1时返回1 否则返回0

      

      按位或(or)  操作符 '|'表示       执行结果是两个操作数的每一位对齐,当两个数值的指定位的值  只要有一个为1  那么返回1  否则返回0

 

      按位异或(xor)  操作符 '^' 表示   执行结果是两个操作数在对应位上  只有一个值为1 时返回1  否则返回0  (两个1返回0,两个0 返回0)

          根据编码规则:整数类型其左边首位为符号位 正数为0  负数为1  (这里用字节表示)

                  负数的二进制表示计算方法: 将其绝对值 减一然后再 对二进制位进行逐位取反 
                    以-1 为例: 1的二进制为"0000  0001"  减一后为“0000 0000 ”   取反后的二进制值为 "1111 1111"
                    以-127 为例: 127的二进制为"0111  1111" 减一后为“0111 1110 ”    取反后的二进制值为 "1000 0001"

      左移  操作符 '<<'      表示将数值转化为二进制之后 把所有数据位像左边移动指定位数 ,空余位用0补齐   

              示例:整数 '2 >>3 '  转化为二进制后为“0000 0010”    ——》结果为 “0000  1000” 结果等于8
      有符号的右移  操作符'>>'   表示将数值转化为二进制之后 把所有数据位像右边移动指定位数    与左移 相反  但是保留左边符号位   

      无符号的右移  操作符'>>>'   表示将数值转化为二进制之后 把所有数据位像右边移动指定位数        

                  示例 将-1 进行无符号右移2位 "-1 >>> 2"      -1 的二进制为  “ 1111  1111  1111 1111 ,1111 1111 1111 1111 ”   

                    右移2位后     “0011  1111  1111 1111 ,1111 1111 1111 1111 ”  转化为十进制 得 到“1073741823”

     

     布尔操作符    逻辑非 用感叹号表示"!"   逻辑与  “&&”   逻辑 或 “||”

     乘法操作        ① 如果操作数都为正数或都为负数 那么结果为正数  ,如果只有一个有符号 那么结果为负数 ,

                  如结果超出范围那么返回Infinity或者-Infinity

               ② 如果一个操作数为NaN 结果为NaN

   

    全等和不全等     全等符号 “===”  当被比较的两个数不经过转换就相等时 返回true  示例:“3” ===3  返回false  原因:第一个数为string类型  第二个数为Number类型

3.7  函数  

  一、理解参数:函数的所有参数通过arguments对象来维护  ,参数命名只是方便语义上的理解; arguments对象类似array(但不是array实例),

         可以通过length属性来确定传入了多少个参数;也可以通过arguments[index]来访问具体参数的值,如果在函数内部修改了

          arguments对象的值,若存在对应传入的参数,那么对应参数的值会同步修改

                   

  二、没有重载:若存在同名函数,那么调用时会执行最后定义的函数

               

   

原文地址:https://www.cnblogs.com/shenwenbo/p/13398829.html