javascript笔记

js数据类型分为:基本类型:数字、字符串、布尔值、undefined和null

        非基本类型(即对象)(或引用类型):数组,对象等

一、变量属性
var a=[];
a[0]=1;
a['foobar']=2;

console.log(a.length);//1

console.log(a.foobar);//2
当一个变量被声明后。扩充其属性并不改变原数据类型

二、命名提升

foo();
var foo=0;
function foo(){
  console.log(1);
}
foo=function(){
  console.log(2);
};
声明的变量和命名函数都会被提升到代码的最前面,只不过声明的变量的赋值语句在代码中的位置不变。所以上面代码应该被理解为:

var foo;
function foo(){
  console.log(1);
}
foo();
foo=0;
foo=function(){
  console.log(2);
};
输出结果:1

三、作用域

foo();
var a=true;
if(a){
  function foo(){
    console.log('a');
  }
}else{
  function(){
    consoloe.log('b');
  }
}

javascript并不是以代码段为作用域,而是以函数。再根据命名提升原则,所以代码改写为:

function foo(){
  console.log('a');
}
function foo(){
  console.log('b');
}
foo();
var a=true;
if(a){
}else{
}
结果:b

原文地址:https://www.cnblogs.com/hujiapeng/p/4966391.html