之前看过好几遍《JavaScript高级程序设计》这一书,但是始终没有完完整整的看过一遍。从现在开始我会把它完整的啃一遍,每章节都记录笔记,自己的心得,加油!

由于前三章的内容比较简单,因此我会把它们放到一个章节里面记录学习历程。

一、基本概念

1、JavaScrip与ECMAScript的关系

可以理解为JavaScript除了包含ECMAScript外,还包括DOM(文档对象模型),BOM( 浏览器对象模型)

2、<script>标签

  • 属性: async   defer   charset   type   src

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

没有async或defer,<script>标签按先后顺序依次解析。浏览器会立即加载并执行指定的脚本,“立即”指的是在渲染该 script 标签之下的文档元素之前,也就是说不等待后续载入的文档元素,读到就加载并执行。

有async,加载和渲染后续文档元素的过程将和js的加载与执行并行进行(异步);

有defer,加载后续文档元素的过程将和js的加载并行进行(异步),但是js的执行要在所有的元素解析完成之后,DOMContentLoaded事件触发之前完成

蓝色线代表网络读取,红色线代表执行时间,这俩都是针对脚本的;绿色线代表 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   原因:关系运算符比较时会转成数值 ,相等运算符则不会

  

  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的原因~

《JavaScript高级程序设计》 -- 基本概念(一)的更多相关文章

  1. Javascript高级程序设计——基本概念(一)

    一.语法 EMCA-262通过叫做ECMAScript的“伪语言”为我们描述了javascript实现的基本概念 javascript借鉴了C的语法,区分大小写,标示符以字母.下划线.或美元符号($) ...

  2. Javascript高级程序设计——基本概念(二)

    相等操作符: 相等==:这个操作符会先转换操作数,强制类型转换,然后再比较他们的相等性. null == undefined //true NaN == NaN //false"5" ...

  3. 《JavaScript高级程序设计(第3版)》阅读总结记录第一章之JavaScript简介

    前言: 为什么会想到把<JavaScript 高级程序设计(第 3 版)>总结记录呢,之前写过一篇博客,研究的轮播效果,后来又去看了<JavaScript 高级程序设计(第3版)&g ...

  4. 【javascript学习——《javascript高级程序设计》笔记】DOM操作

    DOM(文档对象模型)是针对HTML和XML文档的一个API(应用程序编程接口).DOM描绘了一个层次节点树,允许开发人员添加.移除和修改. 1.节点层次 <html> <head& ...

  5. 读javascript高级程序设计00-目录

    javascript高级编程读书笔记系列,也是本砖头书.感觉js是一种很好上手的语言,不过本书细细读来发现了很多之前不了解的细节,受益良多.<br/>本笔记是为了方便日后查阅,仅作学习交流 ...

  6. 《JavaScript高级程序设计》读书笔记--前言

    起因 web编程过程使用javascript时感觉很吃力,效率很低.根本原因在于对javascript整个知识体系不熟,看来需要找些书脑补一下,同时欢迎众网友监督. 大神推荐书籍 看了博客大神们推荐的 ...

  7. 《JavaScript高级程序设计》学习笔记(5)——面向对象编程

    欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第六章内容. 1.面向对象(Object ...

  8. 《JavaScript高级程序设计》学习笔记(4)——引用类型

    欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第五章内容. 在ECMAScript中, ...

  9. 1 《JavaScript高级程序设计》学习笔记(1)

    欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 首先,我将从<JavaScript高级程序设计>这本JavaScript学习者必看的经典教 ...

随机推荐

  1. JAVA网络编程TCP通信

    Socket简介: Socket称为"套接字",描述IP地址和端口.在Internet上的主机一般运行多个服务软件,同时提供几种服务,每种服务都打开一个Socket,并绑定在一个端 ...

  2. 移动端web解决方案

    范畴 移动端web浏览器.至少需要适配的,UC,QQ,各手机内置浏览器,chrome,safari. 是不是觉得和PC端差不多?错了!每款同一版本ios的内置浏览器一样.但每款同一版本android的 ...

  3. Open vSwitch中的datapath flow匹配过程

    看OVS2.7的datapath表项匹配是一件很蛋疼的事情 数据结构看不懂 匹配算法经过了多次演进,已经有点复杂了,看代码完全看不懂,我能怎么办,我也很绝望啊!   2.1之前精确匹配时代,匹配过程是 ...

  4. JavaSE教程-01初识Java-思维导图

    图片看不清楚时: 1)可以将图片另存为图片,保存在本地来查看 2)右击在新标签中打开放大查看. 分解: 1.计算机基本概念的普及 硬件 cpu.内存.硬盘等 软件 系统级软件 Windows.Linu ...

  5. Linux 多个JDK的版本 脚本切换

    这里是在CentOS 系统下配置多个版本之间的切换 1.到官网下载jdk7和jdk8 地址:http://www.oracle.com/technetwork/cn/java/javase/downl ...

  6. 用JMX远程监控Tomcat

    要通过JMX远程监控Tomcat,首先需要进行Tomcat的JMX远程配置. 注意:此配置添加在catalina.bat文件开头的注释行(rem)后面即可. 不需鉴权的配置: 先修改Tomcat的启动 ...

  7. 前端学习数据库MYSQL

    这篇文章主要写了 1.数据库MYSQL 2.基本上会遇到的所有SQL语句 数据库可视化软件------Navicat 数据库里边存放的是表,表与表之间是有关联的,而且可以对表进行相关操作(增,删,改, ...

  8. ListView实现下拉刷新和上拉加载功能

    1 public class RefreshListView extends ListView implements OnScrollListener { private View mHeaderVi ...

  9. 团体队列UVA540 Team Queue(队列简单用法)

    题目背景 队列和优先级队列是大多数计算机科学家都知道的数据结构.但是团队队列却不被人熟知,尽管在生活中经常出现.比如,午餐时间的食堂门口的队列就是一个团队队列.在一个团队队列中,每个元素属于一个团队. ...

  10. ubuntu忽然不能登录,输入密码正确一直返回登录界面

    问题描述 由于配置eclipse命令启动,我修改了 /etc/environment 文件的内容,用命令 shutdown -r -now 重启后,输入密码正确一直返回登录界面. 查了下网上资料:系统 ...