// =============================================================
// 第十一章 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:这部分要参考别的书籍才能理解。下一篇博客将会整理出来。