JavaScript: The Definitive Guide 权威指南,读书笔记(三)

//  =============================================================
//  第十一章 JavaScript更多主题
//  =============================================================

//  类型转换
//  对于对象转数字,字符串,先.valueOf(), 然后toString(),
//  但是Date来说,+ 时,使用toString(), <>!= 比较时valueOf()

//  显示类型转换
//  Boolean(X), Number(X), String(X), Object(X)
//
//  技巧:
//    X + ""  --> 字符串
//    X - 0   --> 转数字
//    !!X     --> 转布尔值
//   
//  数字转字符串
//  toString(X)               X 是基数,2 就是2进制,2-36之间
//  toFixed(N)                N 是保留小数点后几位
//  toExponential(N)          指数计数法 整数部分1位,N 指定小数部分
//  toPrecision(N)            显示N个有效数字,整数部分超过N的个数,就使用指数计数法显示
// 
//  字符串转为数字
//  parseInt()    用0开头的字符串就不用parseInt()去转换了,有可能会出错,第二个参数可以指定被解析数的基数2-36
//  parseFloat() 
// 
//  引用类型:

    (function(){
        var xmas = new Date(2001, 11, 25);

        var solstice = xmas;
        // solstice.setDate(21);
        // log(xmas.getDate());

        // 因为->引用自身是使用值传递的
        function add_to_totals(totals, x) {
            // 对totals进行修改,会影响外部的对象,对其赋值就对外部没有影响了。
            //totals = new Date();      // 所以->如果在函数体内对这个引用自身进行了改变,那么在函数外部是没有变化的
            totals.setFullYear(x);
            log(totals.getFullYear());
        }

        add_to_totals(xmas, 2015);
        log(solstice.getFullYear());

        function update_string(str) {
            // 书上说:JavaScript为了效率起见,在复制和传递字符串时使用的是引用,但是比较的是值。
            // 而由于没有可以修改字符串的方法,我们也就不能证明是否使用引用。
            // 知道比较时使用的是值就OK了。
        }
        var s = "23456";
        log(s);
        update_string(s);
        log(s)
    })();

//  ** 无用存储单元收集 **
//  使用标记和清除算法

//  没有使用到的变量将被清除。
// 
//  词法作用域和嵌套函数
//  NOTE:这部分要参考别的书籍才能理解。下一篇博客将会整理出来。

你可能感兴趣的:(JavaScript: The Definitive Guide 权威指南,读书笔记(三))