JavaScript权威规划–JavaScript变量,效能域,注脚提前(简要学习笔记四)

1.宿主对象与宿主环境

宿主对象:由ECMAScript实现的宿主环境提供的指标,能够领悟为:浏览器提供的目的。全部的BOM和DOM都是宿主对象。

 

宿主环境:一般宿主环境由外壳程序创制与保证,只要能提供js引擎执行的环境都可称之为外壳程序。如:web浏览器等。

 

2.日期的变换

var  now =new Date();
typeof(now+1)    //string
typeof(now-1)    //number
now==now.toString();    //true
now>(now-1)    //true    '>'将日期转换为数字

 

3.变量的宣示

var
i;

var
sum;

或者

var
i,sum;

那几个从没赋早先值的靶子,初步值便是undefined

 

4.在函数体内,局地变量的预先级高于同名的全局变量。并且同名局地变量会修改(覆盖)全局同名变量的值。

var a="glo";
function check(){
    var a="ble";
    return a;
}
check();    //ble

ECMAScript, 

5.函数效用域与评释提前

解析3个事例,如下:

var scp="glob";
function f(){                
    console.log(scp);    //输出"undefined",而不是"glob"
    var scp="loca";        //在这里初始化
    console.log(scp);    //输出"loca"
}

理解:大概你以为怎么第①个出口是”undefined”,你恐怕觉得应该出口”glob”。因为scp上边定义的是全局变量啊。

全局变量在js中的任哪里方都以起效果的,为啥那边出难点了呢?

首先,正如第六点所说。全局变量scp与一些变量scp同名,所以部分变量scp覆盖全局变量scp.

下一场,你又纳闷,代码当时不是只是实施到第②个输出语句么,还没实施到上面包车型大巴var
scp=”loca”么?那时大家要精通有个别。

js的函数成效域是指在函数内表明的富有变量在函数体内部是可知的!

正如那么些例子,函数内部定义的scp无论是在var
scp=”loca”上边依然在上面。是都设有的!

就算你不信,你能够如此测试一下:

<script >
a();
function d(){
    console.log(b);
}
</script>

 

 

ECMAScript 1

 

 

若是b没有的话,呈现的尚未被定义而不是出口”undefined”。

作者们地点说过函数评释后并未赋开头值,暗许其开端值就是”undefined”。

可知f()函数内部 scp
是存在的。只是没有开首化。直到后边初步化”loca”。

事实上上边的例证真是的事态相应是那样:

var scp="glob";
function f(){ 
     var scp ;             
    console.log(scp);    //输出"undefined",而不是"glob"
    var scp="loca";        //在这里初始化
    console.log(scp);    //输出"loca"
}

scp
那种状态也叫“扬言提前”。

 

下边那种气象有个别意思!

var a=1;
function b(){
  a=2;
  return;
  function a(){}      
}
//调用
b();
console.log(a)    //a=1