JavaScript高级程序设计(第3版)笔记(二)

来源:互联网 发布:在线起名网站源码 编辑:程序博客网 时间:2024/05/01 08:18
三.基本概念
 1.区分大小写,标识符指变量、函数、属性的名字、函数的参数,标识符要以字母、下划线、$开头,不能以数字开头
 2.注释/*hello*/  或//hello
   注:支持严格模式的浏览器:IE10+,fireFox4+,Chrome,Opera12+,Safari5.1+
 3.保留字、关键字不能用作标识符
 4.变量:只是保存值得占位符而已
 5.在修改变量值的同时,修改值的类型,有效,但是不推荐 var message = 'hi';
                                                                                               message = 100;//有效但是不推荐
 6.在函数中var定义一个变量,变量会在函数执行完成后自动销毁  function test(){
                                                                                                             var message = 'hi';
                                                                                                         }
                                                                                                         test();
                                                                                                         console.log(message);//报错
 7.function test(){
       message = 'hi';
   }
    test();
    console.log(message);//'hi'   
   省略了var,message变成了全局变量,调用一次test,变量就有了定义,可以在函数外部任何地方访问到
 8.一个语句可以定义多个不同类型的变量,用‘,’隔开,如 var message = 'hi',
                                                                                                         found =false,
                                                                                                         age=29;

 9.ECMA有5中简单数据类型(基本数据类型):undefined,null,boolean,string,number,

                                              一种复杂数据类型:object

 10.typeof操作符 用于检测变量的数据类型,会返回以下字符串可能:
    (1)'undefined'--如果这个值未定义 
    (2)'boolean'--如果这个值是布尔值
    (3)'string'--如果这个值是字符串 
    (4)object--如果这个值是对象或null null被认为是空对象的引用
    (5)function--如果这个值是函数 技术角度上function是对象不是数据类型,但仍有必要区分对象和函数
    (6)number--如果这个值是数值
     typeof操作符的操作值可以是数值字面量,也可以是变量,typeof是一个操作符而不是函数,圆括号可用可不用
     var message = 'some string ';
     alert(typeof message);//'string'
     alert(typeof (message));//'string'

     alert(typeof 95);//'number'

11.undefined类型
  变量声明未赋值时,系统自动赋值undefined,无需自动赋值undefined 
      var message;               
      console.log(message);//undefined
      console.log(age);//报错
      console.log(typeof age)//'undefined'
      console.log(typeof message);//'undefined'
12.null类型
  表示空对象的指针,因此,typeof检测null时,后返回'object'。一般变量准备用于保存对象,先初始化为null
13.boolean 只有true和false两个字面值
  转换布尔值的方法 Boolean(); 
  ""(空字符串),0,NaN,null,undefined转化为false,其余为true*
14.Number类型 :整数和浮点数值
  整数:一般通过十进制表示,也可通过八进制(以0开始),十六进制表示(以0x开始),不过在严格模式下,八进         制会报错
        如果字面值超出范围,则去掉先导零,以十进制进行显示
        var int1 = 070; //56
        var int2 = 079; //无效的八进制--以十进制解析 79
        var int3 = 0xA;//十六进制的10 
        算数运算时,各个进制,最终会转化为十进制
  浮点数值:数值中必须包含一个小数点
        只支持十进制,本身是整数,优先转化为整数
        var float1 = 1.1;//1.1
        var float2 = .1;//有效,但不推荐 0.1
        var float3 = 1.;//1
        var float4 = 1.0;//1
        var float5 = 3.15e2;//315  e可大写可小写
 数值范围:infinity,当超过数值范围,会返回infinity
        isFinite()返回true/false 判断是否超出数值范围
 NaN:非数值,与任何值都不相等,任何涉及NaN的操作返回都是NaN
       console.log(NaN == NaN)//false;
       isNaN()判断是否为NaN
       alert(isNaN(NaN)); //true
       alert(isNaN(10)); //false 
       alert(isNaN("10"));//false
       alert(isNaN(true));//false
 数值转换:包括三种方式Number()、parseInt()、parseFloat() 后两种是将字符串转化成数值
     Nmuber()转换规则:
              如果传入Boolean值,返回1或0;
              如果传入数值,返回数值
              如果传入null,返回0;
              如果传入undefined,返回NaN*
              如果传入是字符串:
                  只包含 数字,则转为十进制数字(去掉先导零)
                  如果是浮点型,则对应转化为浮点型数值
                  如果为空字符串,则转化为0;
                  其他可能,返回NaN
              如果是对象,则调用对象的valueOf()方法,按之前规则转换,如果转换的结果为NaN,则调用对象
              的toString()方法,然后再次依照之前规则转换
    parseInt
      会自动忽略空格,直到出现第一个非空字符开始,直到遇到第一个非数字字符,所以praseInt('')==NaN;*
      可以识别各种进制的数值是,但ECMAScript3识别八进制而ECMAScript5不识别八进制,或当做十进制
      所以可以传入第二个参数,进行区分
      parseInt('10',10);//10 按十进制解析
      parseInt('10',2);//2;按二进制解析
      parseInt('10',8);//8 按8进制解析
      parseInt('10',16);//16 按十六进制解析

      注:parseInt('AF',16) //175 有了第二个参数,可省略八进制中的‘0’,十六进制中的‘0x’
    parseFloat
      只按十进制进行转化,无第二个参数

      parseFloat('0xA');//0

15.String类型
   \b 空格 \n 换行 \r回车 \\斜杠
   转化为字符串的方法:toString() 和String()
   null和undefined不具有toString()方法
   注:toString()方法可以通过传递参数,输出以二进制,八进制,十六进制的字符串值
      var num = 10;
      alert(num.toString(2));//'1010'
      alert(num.toString());//'10'
   String()万能转化方法
      没有参数, alert(String(null)) //'null'
                         alert(String(undefined))//'undefined'
16.object类型
   对象实际是一组属性和功能的集合
   创建自定义对象: var o = new Object();   如果不传入参数可以这样写 var o = new Object;
   object的每个实例,都具有以下属性:
      Constructor:保存着创建当前对象的函数,构造函数(Constructor)就是Object();
      hasOwnProperty('属性名'),用于判断给定属性名在当前对象中是否存在
      isPrototypeOf(object):检测传入对象是否是另一个对象的原型
      propertyIsEnumerable('属性名'):检查给定属性是否能使用for-in语句
      toLocacleString():返回对象的字符串表示,字符串与执行环境的地区对应
      toString();返回对象的字符串表示
      valueOf():返回对象的字符串、数值或布尔值表示

阅读全文
0 0