JavaScript 高级程序设计读书笔记

记录一下比较有趣的内容

if(a+b ==0.3){
   alert("0.1+0.2不等于0.3")
}
而是0.3000000000000000....4

null == undefined
变量声明了未初始化就是undefined,
只要声明了对象,不是string,bool,number一类的就应该赋值null

function add(num1,num2){
    var sum = num1+num2;
    return sum;
}
与
function add(num1,num2){
    sum = num1+num2;
    return sum;
}
不同.
第二个sum会超出function作用域.跑到全局环境.

 

//一道面试题,变量提升,函数提升相关
console.log(v1);
var v1 = 100;
function foo() {
    console.log(v1);
    var v1 = 200;
    console.log(v1);
}
foo();
console.log(v1);

输出的结果:
//undefined
//undefined
//200
//100

我们习惯将var a = 2;看做是一个声明,
而实际上javascript引擎并不这么认为。
它将var a和a = 2看做是两个单独的声明,
第一个是编译阶段的任务,而第二个则是执行阶段的任务。
这意味着无论作用域中的声明出现在什么地方,
都将在代码本身被执行前首先进行处理,
可以将这个过程形象地想象成所有的声明(变量和函数)
都会被“移动”到各自作用域的最顶端,
这个过程被称为提升。

发表评论

邮箱地址不会被公开。