《JavaScript高级程序设计》 -- 基本概念(一)
之前看过好几遍《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高级程序设计》 -- 基本概念(一)的更多相关文章
- Javascript高级程序设计——基本概念(一)
一.语法 EMCA-262通过叫做ECMAScript的“伪语言”为我们描述了javascript实现的基本概念 javascript借鉴了C的语法,区分大小写,标示符以字母.下划线.或美元符号($) ...
- Javascript高级程序设计——基本概念(二)
相等操作符: 相等==:这个操作符会先转换操作数,强制类型转换,然后再比较他们的相等性. null == undefined //true NaN == NaN //false"5" ...
- 《JavaScript高级程序设计(第3版)》阅读总结记录第一章之JavaScript简介
前言: 为什么会想到把<JavaScript 高级程序设计(第 3 版)>总结记录呢,之前写过一篇博客,研究的轮播效果,后来又去看了<JavaScript 高级程序设计(第3版)&g ...
- 【javascript学习——《javascript高级程序设计》笔记】DOM操作
DOM(文档对象模型)是针对HTML和XML文档的一个API(应用程序编程接口).DOM描绘了一个层次节点树,允许开发人员添加.移除和修改. 1.节点层次 <html> <head& ...
- 读javascript高级程序设计00-目录
javascript高级编程读书笔记系列,也是本砖头书.感觉js是一种很好上手的语言,不过本书细细读来发现了很多之前不了解的细节,受益良多.<br/>本笔记是为了方便日后查阅,仅作学习交流 ...
- 《JavaScript高级程序设计》读书笔记--前言
起因 web编程过程使用javascript时感觉很吃力,效率很低.根本原因在于对javascript整个知识体系不熟,看来需要找些书脑补一下,同时欢迎众网友监督. 大神推荐书籍 看了博客大神们推荐的 ...
- 《JavaScript高级程序设计》学习笔记(5)——面向对象编程
欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第六章内容. 1.面向对象(Object ...
- 《JavaScript高级程序设计》学习笔记(4)——引用类型
欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第五章内容. 在ECMAScript中, ...
- 1 《JavaScript高级程序设计》学习笔记(1)
欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 首先,我将从<JavaScript高级程序设计>这本JavaScript学习者必看的经典教 ...
随机推荐
- Java 命令后台运行jar包
nohup java -jar XX.jar >temp.text & nohup 客户端关闭,后台继续运行 & 客户端关闭,后台停止运行 temp.text 是存控制台文件 ...
- 测评:华为最新移动应用/APP测试工具MobileTest
一.目前移动应用/App的测试痛点及可选方案 移动互联网市场进入下半场,同质化竞争激烈,平均获客成本增加.屏幕不适配.闪退.无响应.UI异常等兼容性问题严重影响用户体验,影响用户转化率和用户粘性.如何 ...
- xjoi 2082: 小明的序列
本文为博主原创文章,未均允许…… 反正我也没法管对吧 www点cnblogs点com/AwD-/ 维护一个序列,初始全为\(1\) 支持两种操作: 1.对于所有的位置\(i\),将它的值乘上\(i + ...
- 初入计算机图形学(二):对bidirectional path tracing的一些困惑
本人水平有限,若有错误也请指正~ 前文提及了光线追踪的一些常用手法,但是其中path tracing的实现最为简单,但是其最致命的一个缺点就是图像收敛速度很慢..原因在于从摄影机发射出的每一条光线若不 ...
- 深入探索C++对象模型(四)
Function语意学(The Semantics of Function) static member functions不可能做到的两点:(1)直接存取nonstatic数据,(2)被声明为con ...
- javaCV开发详解之6:本地音频(话筒设备)和视频(摄像头)抓取、混合并推送(录制)到服务器(本地)
javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG.j ...
- Dubbo有意思的特性介绍
Duboo 不单让我们可以像使用本地服务一样的使用远程服务,还设计了很多特性来满足我们平时开发时常见的场景,省却了我们不少麻烦,真是一款有良心的框架,下面针对这些场景和解决方案来具体解释下: 1.接口 ...
- Ubuntu ADSL拨号上网
一直在家用接ADSL的无线wifi上网,最近用了很久的NetGear无线路由器被我毁了,只好暂时用有线了.在Ubuntu Linux下也可直接使用ADSL拨号上网. 1.连接设备 这没什么可多说的,一 ...
- KVM之Live Migration
1.安装KVM必要的软件包 #sudo apt-get install qemu-kvm bridge-utilus 2.制作虚拟机映像ubuntu-12.04.qcow2 $qemu-img cre ...
- Jexus部署.Net Core项目
Jexus Jexus 即 Jexus Web Server,简称JWS,是Linux平台上 的一款ASP.NET WEB服务器.它是 Linux.Unix.FreeBSD 等非Windows系统架设 ...
