1.宿主对象与宿主环境
宿主对象:由ECMAScript实现的宿主环境提供的对象,可以理解为:浏览器提供的对象。所有的BOM和DOM都是宿主对象。
 
宿主环境:一般宿主环境由外壳程序创建与维护,只要能提供js引擎执行的环境都可称之为外壳程序。如:web浏览器等。
 
2.日期的转换
  1. var now =new Date();
  2. typeof(now+1) //string
  3. typeof(now-1) //number
  4. now==now.toString(); //true
  5. now>(now-1) //true '>'将日期转换为数字
 
3.变量的声明
var i;
var sum;
或者
var i,sum;
这些没有赋初始值的对象,初始值就是undefined
 
4.在函数体内,局部变量的优先级高于同名的全局变量。并且同名局部变量会修改(覆盖)全局同名变量的值。
  1. var a="glo";
  2. function check(){
  3. var a="ble";
  4. return a;
  5. }
  6. check(); //ble
5.函数作用域与声明提前
分析一个例子,如下:
  1. var scp="glob";
  2. function f(){
  3. console.log(scp); //输出"undefined",而不是"glob"
  4. var scp="loca"; //在这里初始化
  5. console.log(scp); //输出"loca"
  6. }
理解:可能你觉得为什么第一个输出是"undefined",你可能觉得应该输出"glob"。因为scp上面定义的是全局变量啊。
全局变量在js中的任何地方都是起作用的,为什么这里出问题了呢?
首先,正如第四点所说。全局变量scp与局部变量scp同名,所以局部变量scp覆盖全局变量scp.
然后,你又困惑,代码当时不是只是执行到第一个输出语句么,还没执行到下面的var scp="loca"么?这时我们要明白一点。
js的函数作用域是指在函数内声明的所有变量在函数体内部是可见的!
正如这个例子,函数内部定义的scp无论是在var scp="loca"上面还是在下面。是都存在的!
如果你不信,你可以这么测试一下:
  1. <script >
  2. a();
  3. function d(){
  4. console.log(b);
  5. }
  6. </script>
 
 
 
 
如果b没有的话,显示的没有被定义而不是输出"undefined"。
我们上面说过函数声明后没有赋初始值,默认其初始值就是"undefined"。
可见f()函数内部 scp 是存在的。只是没有初始化。直到后面初始化"loca"。
其实上面的例子真是的情况应该是这样:
  1. var scp="glob";
  2. function f(){
  3. var scp ;
  4. console.log(scp); //输出"undefined",而不是"glob"
  5. var scp="loca"; //在这里初始化
  6. console.log(scp); //输出"loca"
  7. }
scp 这种情况也叫“声明提前”。
 
下面这种情况有点意思!
  1. var a=1;
  2. function b(){
  3. a=2;
  4. return;
  5. function a(){}
  6. }
  7. //调用
  8. b();
  9. console.log(a) //a=1

JavaScript权威设计--JavaScript变量,作用域,声明提前(简要学习笔记四)的更多相关文章

  1. JavaScript权威设计--命名空间,函数,闭包(简要学习笔记十二)

    1.作为命名空间的函数 有时候我们需要声明很多变量.这样的变量会污染全局变量并且可能与别人声明的变量产生冲突. 这时.解决办法是将代码放入一个函数中,然后调用这个函数.这样全局变量就变成了 局部变量. ...

  2. JavaScript权威设计--JavaScript函数(简要学习笔记十)

    1.函数命名规范 函数命名通常以动词为前缀的词组.通常第一个字符小写.当包含多个单词时,一种约定是将单词以下划线分割,就像"like_Zqz()". 还有一种就是"lik ...

  3. JavaScript权威设计--JavaScript函数(简要学习笔记十一)

    1.函数调用的四种方式 第三种:构造函数调用 如果构造函数调用在圆括号内包含一组实参列表,先计算这些实参表达式,然后传入函数内.这和函数调用和方法调用是一致的.但如果构造函数没有形参,JavaScri ...

  4. JavaScript权威设计--JavaScript类型,值,变量(简要学习笔记三)

    1.负号是一元求反运算 如果直接给数字直接量前面添加负号可以得到他们的负值     2.JavaScript中的运算超出了最大能表示的值不会报错,会显示Infinity. 超出最小也不报错,会显示-I ...

  5. JavaScript权威设计--JavaScript对象(简要学习笔记七)

    1.with语句 语法: width(object){ statement } with语句可用于临时扩展作用域链.作用域链可以按序检索的对象列表,通过它可以进行变量名解析. with将object添 ...

  6. JavaScript权威设计--JavaScript表达式与运算符(简要学习笔记五)

    1.3种原始表达式     1.直接量:    1.23    //数字直接量                         “hello”    //字符串直接量                 ...

  7. JavaScript权威设计--JavaScript脚本化文档Document与CSS(简要学习笔记十五)

    1.Document与Element和TEXT是Node的子类. Document:树形的根部节点 Element:HTML元素的节点 TEXT:文本节点   >>HtmlElement与 ...

  8. JavaScript权威设计--JavaScript数组(简要学习笔记九)

    1.数组的创建 如: var a=[1.1,null,"a"]; var b=[1, ,3]; //中间的那个元素是undefined var c=[ , , ] 这里c.leng ...

  9. JavaScript权威设计--JavaScript表达式与运算符,语句(简要学习笔记六)

    1.delete是一元操作符,用来删除对象属性或者元素. var a={ x:1, y:2 } delete a.x; //删除x属性 “x”in a //false:a对象中已经不存在x属性 ale ...

随机推荐

  1. ABP文档 - 导航

    文档目录 本节内容: 创建菜单 注册导航供应器 显示菜单 每个web应用都有一些菜单用来在页面/屏幕之间导航,ABP提供了一个通用的基础框架创建并显示菜单给用户. 创建菜单 一个应用可能由不同模块组成 ...

  2. macOS 我的装机

    最近多次配置 Mac 的开发环境,稍微记录一下 1 创建无付费信息的Apple ID 2 Xcode ​ gem 源更改 3 Alfred 4 微信 5 SourceTree 6 Sublime Te ...

  3. html5标签canvas函数drawImage使用方法

    html5中标签canvas,函数drawImage(): 使用drawImage()方法绘制图像.绘图环境提供了该方法的三个不同版本.参数传递三种形式: drawImage(image,x,y):在 ...

  4. ElasticSearch 5学习(9)——映射和分析(string类型废弃)

    在ElasticSearch中,存入文档的内容类似于传统数据每个字段一样,都会有一个指定的属性,为了能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理成字符串值,Elasticsearc ...

  5. [C#] 进阶 - LINQ 标准查询操作概述

    LINQ 标准查询操作概述 序 “标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> ...

  6. C++随笔:.NET CoreCLR之GC探索(1)

    一直是.NET程序员,但是.NET的核心其实还是C++,所以我准备花 一点时间来研究CoreCLR和CoreFX.希望这个系列的文章能给大家带来 帮助. GC的代码有很多很多,而且结构层次对于一个初学 ...

  7. js学习之变量、作用域和内存问题

    js学习之变量.作用域和内存问题 标签(空格分隔): javascript 变量 1.基本类型和引用类型: 基本类型值:Undefined, Null, Boolean, Number, String ...

  8. Python多线程爬虫爬取电影天堂资源

    最近花些时间学习了一下Python,并写了一个多线程的爬虫程序来获取电影天堂上资源的迅雷下载地址,代码已经上传到GitHub上了,需要的同学可以自行下载.刚开始学习python希望可以获得宝贵的意见. ...

  9. jQuery个性化图片轮播效果

    jQuery个性化图片轮播效果 购物产品展示:图片轮播器<效果如下所示> 思路说明: 每隔一段时间,实现图片的自动切换及选项卡选中效果,鼠标划入图片动画停止,划出或离开动画开始 两个区域: ...

  10. PLSql Oracle配置

    1.安装Oracle客户端或者服务端 2.配置环境变量 <1>.一般如果安装了Oracle客户端或者服务端的话,在环境变种的Path中有Oracle的安装路径(计算机-属性-高级系统设置- ...