《JavaScript高级程序设计》 — 基本概念(一)

事先看过好五次《JavaScript高级程序设计》这一书,可是一贯没有完完整整的看过三回。从现行反革命始于作者会把它完全的啃三回,每章节都记录笔记,自身的体会,加油!

鉴于前三章的剧情比较简单,由此作者会把它们放到叁个章节里面著录学习进程。

壹 、基本概念

1、JavaScrip与ECMAScript的关系

图片 1

能够通晓为JavaScript除了含有ECMAScript外,还包含DOM(文书档案对象模型),BOM(
浏览器对象模型)

2、<script>标签

  • 属性: async   defer   charset   type   src 

defer与async的差别:(只适用于外部脚本文件)

从不async或defer,<script>标签按先后顺序依次解析。浏览器会应声加载并实行钦赐的脚本,“马上”指的是在渲染该 script 标签之下的文书档案成分此前,相当于说不等待后续载入的文书档案成分,读到就加载并举行。

有async,加载和渲染后续文书档案成分的经过将和js的加载与履行并行举办(异步);

有defer,加载后续文书档案成分的经过将和js的加载并行实行(异步),然则js的实践要在装有的要素解析完毕今后,DOMContentLoaded事件触发此前形成

图片 2

蓝灰线意味着互联网读取,浅紫线代表执行时间,那俩都以针对脚本的;米黄线意味着
HTML 解析。

详尽剖析可点击  https://segmentfault.com/q/1010000000640869

  • 标签地方:可放在<head>或许<body>成分中剧情的背后
  • 文书档案格局:(可分为混杂方式和规范情势)

IE中浏览器格局与文书档案格局区别:

浏览器格局:影响的是浏览器版本以及IE的条件注释

文书档案形式:影响的是IE的排版引擎,DOM的渲染

详见分析可点击
 http://www.iefans.net/ie-liulanqi-wendang-moshi-xuanran-ceshi/

三 、数据类型

  5种不难的数据类型:String、Number、Boolean、Null、Undefined  
1种复杂数据类型:Object

  typeof操作符检查和测试变量的数据类型,重返字符串  注意:typeof null
再次回到 ‘object’,null被认为是3个空的目的引用

  变量未开首化、未证明时typeof都重返undefined

  —–  Boolean类型

数据类型 转换为true的值 转换为false的值
Boolean true false
String 非空字符串 空字符串
Number 任何非零数字值(包括无穷大) 0和NaN
Object 任何对象 null
Undefined 不适用 undefined

  —–  Number类型

  js中浮点数的乘除不纯粹,慎用~

  isFinite()  判断三个数是不是在小小和最大的数值之间      

  NaN  非数值,与别的都不对等,包蕴它自己           isNaN()  

  非数值转换为数值:Number()  Number(”)  0    Number(null) 0

           parseInt()  parseFloat()
 借使第四个字符不是数字字符只怕负号,则赶回NaN   parseInt(”)  NaN  
parseInt(null) NaN

  —–  String类型

  转字符串的法门:  toString()  除null和undefined外都有此方法    
 String()可将其它项指标值转为字符串       加号操作符 +”   

  —–  Object类型

  Object的各样实例都有着下列属相和格局

    Constructor:保存着用于创设当前目的的函数

    hasOwnProperty(propertyName):属性在现阶段指标实例中是不是留存

    isPrototypeOf(object):传入的靶子是不是是另二个目的的原型

    propertyIsEnumerable(propertyName):属性是不是能利用for-in语句来枚举

    toLocaleString()

    toString():再次回到对象的字符串表示

    valueOf():再次来到对象的字符串、数值或布尔值表示

4、操作符

  var age = 10;  var  newAge = ++age;
 console.log(age);  //11   console.log(newAge);   //11  
 ++age先加后赋值,即先age+1,再将值赋给newAge 

  var age = 10;  var  newAge = age++;
 console.log(age);  //11   console.log(newAge);   //10  
 ++age先赋值后加,即先将值赋给newAge ,再age+1

  —–  位操作符

  按位非(~)即操作数的负值减1

  按位与(&)四个数值对应位都以1时才回去1 ,任意一个人是0,结果都以0 

  按位或(|)有一位是1的情形下就回去1

  按位异或(^)五个数值对应位上唯有三个1时才回去1

  左移(<<)将数值的富有位向左移动钦定的位数,多出的空位用0填充,不会潜移默化操作数的号子位

  有号子的右移(>>)用符号位的值来填充空位

  无符号的右移(>>>)用0填充空位

  —–  布尔操作符

  逻辑非(!)

  逻辑与(&&)短路操作符,即首先个操作数求值结果为false,就不会对第一个操作数求值
  eg:console.log(1 && 2 && 3);  //3

  逻辑或(||)短路操作符,即首先个操作数求值结果为true,就不会对第一个操作数求值  eg:console.log(1 || 2 || 3);  //1

  —–  相等操作符

  null >= 0  //true    null == 0
//false   原因:关系运算符相比时会转成数值 ,相等运算符则不会

  图片 3

  null == undefined  //true    null == 0 //false    undefined == 0
//false 

  ==只相比值  
===既相比较值,又比较类型

  从前边试被问到的一道标题:var a = 1, b
= 1;  var c = {a:1}, d = {a:1};  console.log(a == b);  console.log(a ===
b);   console.log(c == d);   console.log(c === d);  //true true false
false

  逗号表明式用来赋值时,总会回来表明式中的最终一项
  eg:var num=(1,2,3);   console.log(num);  //3

5、语句

  do{} while ()语句    while() {}语句    switch语句

  for-in语句:可用来枚举对象的属性,再次来到属性的次第顺序大概会因浏览器而异

  break语句:退出循环,执行循环前边的言语    
 continue:跳出这一次巡回,执行下次循环

6、函数

  arguments对象可访问参数的数组,参数的值可因而arguments[0]……来获取,有length属性

  未钦赐再次来到值的函数再次来到undefined值。这就是在chrome
console中有时候输入一些命令会重返undefined的原因~