《Javascript高级程序设计》读书笔记——ECMAScript基础(2)

题:转换:

1. 转换成字符串:toString()方法

    Number的toString()方法有重载,可以指定转换成的字符串是二进制,八进制等等
2. 转换成数字:parseInt()和parseFloat()参数必须是字符串否则返回NaN
    ❑parseInt()->从第一个字符开始检索字符串直到已经不是数字
        var iNum1 = parseInt(“1234blue”); //returns 1234
        var iNum2 = parseInt(“0xA”); //returns 10有前导0x的默认以16进制转换
        var iNum3 = parseInt(“22.5”); //returns 22
        var iNum4 = parseInt(“blue”); //returns NaN
        var i1 = parseInt(“010”); //returns 8有前导0的默认以八进制转换
        var i2 = parseInt(“010”, 8); //returns 8
        var i3 = parseInt(“010”, 10); //returns 10
    ❑parseFloat()类似parseInt的方式检索浮点数,不同点:字符串必须以十进制表示浮点数。
        var fNum1 = parseFloat(“1234blue”); //returns 1234.0
        var fNum2 = parseFloat(“0xA”); //returns NaN只能十进制
        var fNum3 = parseFloat(“22.5”); //returns 22.5
        var f4 = parseFloat(“22.34.5”); //returns 22.34第一个小数点有效
        var fNum5 = parseFloat(“0908”); //returns 908十进制
        var fNum6 = parseFloat(“blue”); //returns NaN
主题:强制类型转换:
    ❑ Boolean(value) –如果value是空字符串,数字0,unefined,null返回false,否则true
    ❑ Number(value) –类似parseInt和parseFloat,不过要转换整个字符串!

        Number(false) 0;

        Number(true) 1

        Number(undefined) NaN;

        Number(null) 0;

        Number(“5.5”) 5.5;

        Number(“56”) 56;

        Number(“5.6.7”) NaN;

        Number(new Object()) NaN;

        Number(100) 100

    ❑ String(value) – 调用value的toString方法。对null和undefined返回相应字符串不会出错
        var s1 = String(null); //”null”
        var oNull = null; var s2 = oNull.toString();//出错,未初始化
主题:引用类型:
1. 实例化:var o = new Object();没有参数时括号不是必需的,但是最好使用括号
2. Object类:
   ❑属性:
     constructor对创建对象的函数的引用:
       var date = new Date();
       if(date.constructor==Date)alert(“it is a date”);//return “it is a date”
        prototype对该对象的对象原型的引用(实现继承)
   ❑方法:
     hasOwnProperty(property)判断对象是否具有某个特定的属性,参数用字符串指定
     isPrototypeOf(object)判断对象是否为另一对象的原型
     propertyIsEnumerable(String property) : Boolean属性是否可用for。。。in语句枚举
    toString() : String返回原始字符串表示
    valueOf() : Object返回最合适该对象的原始值实现从对象到原始值的转换
3. Boolean类:
     var ofalse = new Boolean(false);
     var bff = ofalse && true;// output true布尔表达式运算中对象被转换成true
     尽量避免使用Boolean对象
4. Number类
    ❑方法:
      valueof()返回原始值
      toString(radix) : String返回字符串,radix(2~36)指定数制
      toFixed([Number digits]) : String返回有digits个小数的字符串形式
      toExponential([Number digits]) : String返回有digits个小数的科学计数法的字符串形式
      toPrecision([Number precision]) : String返回最有意义的形式,precision指定小数位数
    ❑注意:toFixed,toExponential,toPrecision方法都会进行舍入操作,以便用正确的小数位数正确地表示一个数。尽量避免直接使用Number类的对象
5. String类
    ❑属性:
      length : Number字符串长度
    ❑方法:
     charAt(index) : String如果index越界返回空字符串
     charCodeAt( index) : Number返回指定索引的字符代码
     concat(String string2...stringN) : String返回新串,原串不变
     indexOf(String searchValue, [String fromIndex]) : Number从字符串的开头(位置0)开始检索子串
     lastIndexOf(String searchValue, [String fromIndex]) : Number从字符串的结尾开始检索子串
     localeCompare(String target) : Number比较
     slice(beginSlice, endSlice) : String取子串,参数为负数的时候表示从字符串最后开始
     substring(Number indexA, [Number indexB]) : String取子串,参数为负数是做0处理,并且把两个参数中较小的做起始位
     substr(Number start, Number length) : String取子串,参数为负数时从结尾开始
主题:运算符:
1.delete:删除自定义的对象属性,数组元素
2.void:对任何值都返回undefined
3.位运算符:
   所有整数字面量都默认存储为有符号整数。只有用ECMAScript的位运算符才能创建无符号整数。
   ~按位非,结果为:数字求负再减一
    &与,|或,^异或,<<左移,>>有符号右移,>>>无符号右移(对于负数将其看作无符号 数,通常都很大)
4. Boolean运算符
 逻辑NOT(!):

      如果运算数是对象,返回false;

      如果运算数是数字0,返回true;

      如果运算数是0以外的任何数字,返回false; 如果运算数是null,返回true;

      如果运算数是NaN,返回true;

      如果运算数是undefined,发生错误。

      var oFalse = new Boolean(false); alert(!oFalse);//return false,对象返回false
 逻辑AND运算符(&&)
    如果第一个操作数未定义过,出错
    否则如果第一个操作数是false,返回false
    否则如果第一个操作数是null/undefined/NaN/0返回null/undefined/NaN/0
    否则如果第二个操作数未定义,出错
    否则返回第二个操作数
 逻辑OR运算符(||)
    如果第一个操作数未定义过,出错
    否则如果第一个操作数是true,返回true
    否则如果第二个操作数未定义过,出错
    否则返回第一个操作数不在null/undefined/NaN/false/0中,返回第一个操作数
    否则返回第二个操作数即第一个操作数是null/undefined/NaN/false/0时返回第二个操作数
5.乘性运算符
 乘法运算符
 如果两个运算符都是数字,正常运算
 如果某个运算数是NaN,结果为NaN
 Infinity*0结果为NaN
 Infinity*0以外数字结果为Infinity,符号由第二个运算符的符号表示
 Infinity*Infinity结果为Infinity
 除法运算符(/)
 如果运算数都是数字,执行常规的除法运算
 如果某个运算数是NaN,结果为NaN。
 Infinity被Infinity除,结果为NaN。
 Infinity被任何数字除,结果为Infinity。
 0除一个非无穷大的数字,结果为NaN。
 Infinity被0以外的任何数字除,结果为Infinity或-Infinity,由第二个运算数的符号决定。
 取模运算符(%)
 如果运算数都是数字,执行常规的算术,返回除法运算得到的余数。
 如果被除数是Infinity,或者除数是0,结果为NaN。
 Infinity被Infinity除,结果为NaN。
 如果除数是无穷大的数,结果为被除数。
 如果被除数为0,结果为0。
5.加性运算符
 加法运算符(+)
 如果运算数都是数字,执行常规的算术
 如果有一个运算数是字符串,则把另一个转换成字符串,返回连接后的字符串
 某个运算数是NaN,结果为NaN。
 Infinity加Infinity,结果为Infinity。
 -Infinity加-Infinity,结果为-Infinity。
 Infinity加-Infinity,结果为NaN。
 +0加+0,结果为+0。
 -0加+0,结果为+0。
 -0加-0,结果为-0
 减法运算符(-)
 如果运算数都是数字,执行常规的算术
 某个运算数是NaN,结果为NaN。
 Infinity减Infinity,结果为NaN。
 -Infinity减-Infinity,结果为NaN。
 Infinity减-Infinity,结果为Infinity。
 -Infinity减Infinity,结果为-Infinity。
 +0减+0,结果为+0。
 -0减-0,结果为+0。
 -0减+0,结果为-0。
 某个运算数不是数字,结果为NaN。
6.关系运算符(>,<,<=,>=)
 如果两个都是字符串,按照其字符代码进行比较小写字母在大写字母之前
 如果有一个数字,先把字符串转换成数字再比较
 如果有一个是NaN返回false
7.等性运算符(==,!=,===,!==)
 ==,!=
 如果一个运算数是Boolean值,将false转换为0,true转换为1
 如果一个是字符串,一个是数字,把字符串转换成数字
 如果一个是对象,一个是字符串,将对象转换成字符串
 如果一个是对象,一个是数字,把对象转换成数字
 null和undefined相等
 null和undefined不做转换
 如果有一个NaN,不相等
 如果都是对象,比较两者的引用值,指向同一对象则相等
 ===,!==:不进行类型转换,直接进行比较
主题: 语句:
1. if语句,do-while语句,while语句
2. for语句:for(var i = 0;i < 10; i++){};alert(i);//output 10i在循环之外仍可以使用
3. for-in语句:用于枚举对象的属性,对于数组枚举的是索引!
4. 语句可以加标签
5. break,continue,支持标签
6. with语句-不要使用!
7. switch语句:switch可用于字符串,case情况可以使用变量
主题: 函数:
1. 无重载:
可以用同一个名字在同一个作用域中定义多个函数,但只有最后一个起作用
2. arguments对象(Function类的属性):模拟重载
3. Function类:函数是对象
 Function构造函数:不要使用
var function_name = new Function(argument1, argument2,..,argumentN, function_body);最后一个参数是字符串形式的函数体,前面函数的参数
 属性
 length:函数定义是声明的参数个数
 valueof和toString默认返回函数的源码


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值