博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript权威设计--JavaScript变量,作用域,声明提前(简要学习笔记四)
阅读量:6292 次
发布时间:2019-06-22

本文共 1446 字,大约阅读时间需要 4 分钟。

1.宿主对象与宿主环境
宿主对象:由ECMAScript实现的宿主环境提供的对象,可以理解为:浏览器提供的对象。所有的BOM和DOM都是宿主对象。
 
宿主环境:一般宿主环境由外壳程序创建与维护,只要能提供js引擎执行的环境都可称之为外壳程序。如:web浏览器等。
 
2.日期的转换
var  now =new Date();typeof(now+1)    //stringtypeof(now-1)    //numbernow==now.toString();    //truenow>(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

 

5.函数作用域与声明提前
分析一个例子,如下:
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"上面还是在下面。是都存在的!
如果你不信,你可以这么测试一下:
 
 
 
 
如果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

 

转载:http://www.cnblogs.com/zqzjs/p/4796242.html

你可能感兴趣的文章
中间件
查看>>
Android SharedPreferences
查看>>
css面试题
查看>>
Vue组建通信
查看>>
用CSS画一个带阴影的三角形
查看>>
前端Vue:函数式组件
查看>>
程鑫峰:1.26特朗.普力挺美元力挽狂澜,伦敦金行情分析
查看>>
safari下video标签无法播放视频的问题
查看>>
01 iOS中UISearchBar 如何更改背景颜色,如何去掉两条黑线
查看>>
对象的继承及对象相关内容探究
查看>>
Spring: IOC容器的实现
查看>>
Serverless五大优势,成本和规模不是最重要的,这点才是
查看>>
Nginx 极简入门教程!
查看>>
iOS BLE 开发小记[4] 如何实现 CoreBluetooth 后台运行模式
查看>>
Item 23 不要在代码中使用新的原生态类型(raw type)
查看>>
为网页添加留言功能
查看>>
JavaScript—数组(17)
查看>>
Android 密钥保护和 C/S 网络传输安全理论指南
查看>>
以太坊ERC20代币合约优化版
查看>>
Why I Began
查看>>