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

前面看了一些周《JavaScript高级程序设计》这无异于书,但是一直没完完整整的看了相同不折不扣。从兹初步我会将她整体的啃一布满,每章都记录记,自己之感受,加油!

鉴于前三章的情比较简单,因此我会见管其坐一个段中著录上过程。

相同、基本概念

1、JavaScrip与ECMAScript的关系

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事件触发之前形成

ECMAScript 2

蓝色线意味着网读取,红色线代表履时,这俩都是针对脚本的;绿色线意味着
HTML 解析。

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

  • 标签位置:可在<head>或者<body>元素被内容的后边
  • 文档模式:(可分为混杂模式及正规模式)

IE中浏览器模式以及文档模式区别:

浏览器模式:影响之是浏览器版本与IE的规则注释

文档模式:影响之是IE的排版引擎,DOM的渲染

详尽剖析只是点击
 http://www.iefans.net/ie-liulanqi-wendang-moshi-xuanran-ceshi/

3、数据类型

  5种植简易的数据类型:String、Number、Boolean、Null、Undefined  
1种复杂数据列:Object

  typeof操作符检测变量的数据类型,返回字符串  注意:typeof null
返回 ‘object’,null被当是一个缺损的靶子引用

  变量未初始化、未声明时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   原因:关系运算符比较常见面转移成为屡值 ,相等运算符则不会见

  ECMAScript 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的案由~