JavaScript高级程序设计(第3版) 第三章 (基本概念)
3.1 语法
1.不以数字开头的数字,字母,下划线,美元符号
2.注释:html <!-- --> css/**/ js单行// 多行/**/
3.ES5 引入了严格模式(strict mode)。即为js定义的一种不同的解析与执行模型。 可以在整个脚本头部或者函数的上方,包含“use strict”来启用严格模式(ie10以上支持严格模式)
3.2 关键字和保留字
3.3 变量
1.ECMAScript的变量是松散型的。即每个变量仅仅是一个用于保存值的占位符而已。
不存在定义某个变量就必须保存该种数据类型的值的规则, “js”的变量相对于其他语言的变量,更加“放荡”(不“始终如一”)。
2.未经初始化的变量,会保存一个特殊值-----undefined。
3.使用未声明(定义)的变量会报referenceError defined。
3.4 数据类型
1.typeof ①结果:undefined,number,string,boolean,obeject(object和null的值,null是一个空的对象引用);function
② 两种用法:typeof 1 ; typeof(1)
2.undefined (已经定义,未被初始化的值)
defined(未被定义的)
3.null 空引用
null和undefined 相等(==) 不全等(===)
4.boolean 空字符串,0和NaN,null,undefined ==》false
5.number①用于保存浮点数值需要的内存空间是保存整数值的2倍。
②可以用科学计数法(e)表示浮点数 3e2 = 3*10的2次方 = 3*100
③浮点数的最高精度是17位数。
④浮点数计算会产生舍入误差问题。(基于IEE754数值的浮点计算的通病)
0.1+0.2 = 0.30000000000000004
⑤isFinite(num) 确定num是不是无穷
⑥NaN 不与任何值相等,包括NaN本身 isNaN 判断是否可以转化成数值
isNaN(NaN)true NaN是特殊的数值类型
isNaN(“blue”) false
isNaN(“11”) false
⑦Number() “”,null ,false =》 0
undefined=》NaN
忽略前导0,无法解析八进制
⑧paseInt() “”,null ,undefined =》 NaN
忽略前导0,无法解析八进制 所以加入第二个参数: paseInt("0x16",16) 基数16不带引号
遇到无法转换的字符串时即停止。
⑨ paseFloat() 解析时第一个小数点有效,第二个小数点无效。
忽略前导0,只解析10进制数;16进制的字符串会被转化成0
paseFloat("1234Blue") // paseFloat("0xA") // paseFloat("1.9.8") // 1.9
6.string()修改字符串 : 要改变某个字符串的值就要,”销毁“原来的字符串。“填充”新的字符串。
这个过程是后台进行的。所以在某些旧版本的浏览器中,拼接字符串速度很慢。
①toString() 转化成字符串 ,null和undefined没有这个方法
toString(num) 可以输出任何有效num制式表示的字符串值
②转型函数String();
7.object
3.5 操作符
1.一元 ①前置递增/递减 (1) 例如:--a; 先递减1再参与运算
var a = 2;
var b = --a + 2;
alert(a) //
alert(b) //
②后置递增/递减(1)
var a = 2;
var b = a-- + 2;
alert(a) //
alert(b) //
2.位操作符 ①负数的二进制码,使用的是二进制补码
求二进制补码:a,求这个值绝对值的二进制码 b,二进制反码(0->1,1->0)c.二进制码+1 口诀:正,反,+1
①ECMAScript 所有数值都是以64位的格式保存,但是位操作符不直接操作64位的值。而是先把64的值转化成32位,操作32位,最后再把结果转化成64位。
② 按位非 ~ 本质:-操作数-1
var n = 25;
var n1 = ~n;
alert(n1); //26 //-25-1
③按位与 & (10进制 -》 2进制 16 8 4 2 1)
④按位或 | ⑤按位异或 与 | 的不同,1&1= 0;
⑥(有符号)左移 <<,不会影响符号
⑦(有符号)右移 >>,不会影响符号
⑦(无符号)右移 > >>,影响符号(注意负数的是补码)
3.布尔操作符 ① 逻辑非 ! ②逻辑与 && 短路与(a,一假则假 b,第一个为假以后就不会判断第二个操作数)
var n = false;
alert(n && bbbbb); //bbbbb是没有定义的变量。正常情况下是会提示refrenceError defined的
③逻辑或 || 短路操作符 第一个为真以后就不会判断第二个操作数
var n = true;
alert(n || bbbbb); //bbbbb是没有定义的变量。正常情况下是会提示refrenceError defined的
4.乘性操作符 (* / %)
5.加性操作符 ①+ 如果一个操作数是字符串,则把另一个也转换成字符串
②0 - 0 = 0 ; 0- (-0) = 0;-0-(-0) = 0;
6.关系操作符 ①> < <= >= ②如果一个操作数是数值,则把另一个操作数也转换成数值 ;
③如果2个操作数都是字符串,则比较2个字符串的字符编码(大写字母的字符编码小于小写字母的字符编码)
var tre = “A” < "a"; //true
console.log("23" < "3"); //true (此处都是字符串)
7.相等操作符 ①== 比较的是值 (先转换再比较)②=== 比较的是类型(只比较不转换)
特殊情况:null == undefined; (记住即可)
8.条件操作符(?:) ①
var a = 1> 2?1:2; //a = 2
9.赋值操作符 = += *= -= /= %=
10.逗号操作符 ①用于执行多个操作(eg:声明多个变量)
3.6 语句
1.if ①始终使用{} ②始终使用代码块分行
2.do-while(后测试循环)
3.while(前测试循环)
4.for ①在循环内部定义的i ,在外部仍然可以访问它。
②for(;;) 无限循环
5.for in ① 可以枚举对象属性
②ECMAScript 对象的属性没有顺序。所以通过for-in循环输出的属性名的顺序是不可预测的。
③ 如果迭代对象 的值是null或者undefined,则不执行循环
④for(var x in arr)
6.label语句
7.break和continue ①break会立即退出循环,强制执行循环后面的语句
var num = 0;
for (var i = 0; i < 10; i++) {
if(i % 5 == 0){
break;
}
num ++;
}
alert(num) //num = 4;i = 5
②continue 会立即退出循环,从循环顶部继续执行。
var num = 0;
for (var i = 0; i < 10; i++) {
if(i % 5 == 0){
continue;
}
num ++;
}
alert(num) //num = 8;i = 9
③与label语句的结合使用。
8.width 语句 ①为了简化多次编写同一个对象的工作。
width(location){ var url = href; }
9.switch操作符使用的是全等操作符
3.7 函数
1. ECMAScript中的函数,参数用数组表示。函数接触的始终是这个数组,而不关心数组中包含哪些参数。所以即使定义的函数接受3个参数,单在使用时不一定要传3个参数,可以少传、多传和不传。
在函数体内部,通过arguments对象访问参数数组。
2.arguments.length 可以得知有多少个参数传输给函数
3.function fun1(num1,num2){}
num1和arguments[0]的值会同步,但是它们的内存空间是独立的。
4.重载:在其它语言(如java)中可以为一个函数编写2个定义,只要这2个函数定义的签名(接受的参数的类型和数量)不一样即可。
ECMAScript中,参数是用数组表示的,因此对于函数来说参数的类型和数量都一样,所以没有签名,没有真正的重载。
JavaScript高级程序设计(第3版) 第三章 (基本概念)的更多相关文章
- javascript高级程序设计第3版——第3章 基本概念
- 《JavaScript高级程序设计》读书笔记(三)基本概念第三小节 String、Object类型
内容---语法 上一小节---数据类型 本小节 String类型---流程控制语句---理解函数 String类型--零个或者多个16位Unicode字符组成字符序列,即字符串--可以由双引号&quo ...
- javascript高级程序设计第3版——第10章 DOM
第十章,DOM DOM是语言中立的API,用于访问和操作HTML 和XML 文档.DOM1 级将HTML 和XML 文档形象地看作一个层次化的节点树,可以使用JavaScript 来操作这个节点树,进 ...
- javascript高级程序设计第3版——第6章 面向对象的程序设计
第六章——面向对象的程序设计 这一章主要讲述了:面向对象的语言由于没有类/接口情况下工作的几种模式以及面向对象语言的继承: 模式:工厂模式,构造函数模式,原型模式 继承:原型式继承,寄生式继承,以及寄 ...
- 《JavaScript高级程序设计》读书笔记(三)基本概念第四小节 操作符
内容---语法 上一小节---数据类型 本小节 操作符---流程控制语句---理解函数 操作符--操作数据值的操作符--算术(如加减).位操作符.关系.相等--ECMAScript操作符可以适用于很多 ...
- 《JavaScript高级程序设计》读书笔记(三)基本概念第二小节 Number类型
内容---语法 上一小节---数据类型 本小节 number类型---流程控制语句---理解函数 number类型--使用IEEE754格式来表示整数和浮点数值(双精度数值)--规定了数值字面量格式, ...
- 《JavaScript高级程序设计》读书笔记(三)基本概念第一小节
内容---语法 本小节---数据类型 本小节 undefined,null,Boolean---流程控制语句---理解函数 任何语言的核心都必然会描述这门语言最基本的工作原理.而描述的内容通常都要涉及 ...
- Javascript高级程序设计读书笔记(第三章)
第3章 基本概念 3.4 数据类型 5种简单数据类型:undefined.boolean.number.null.string. typeof操作符,能返回下列某个字符串:“undefined”.“b ...
- javascript高级程序设计第3版——第12章 DOM2与DOM3
12章——DOM2与DOM3 为了增强D0M1,DOM级规范定义了一些模块. DOM2核心:为不同的DOM类型引入了一些与XML命名空间有关的方法,还定义了以编程方式创建Document实例的方法: ...
- javascript高级程序设计第3版——第1Java章 DOM扩展
虽然DOM 为与XML 及HTML 文档交互制定了一系列核心API,但仍然有几个规范对标准的DOM进行了扩展.这些扩展中有很多原来是浏览器专有的,但后来成为了事实标准,于是其他浏览器也都提供了相同的实 ...
随机推荐
- EOJ Monthly 2019.2 E. 中位数 (二分+dfs)
题目传送门 题意: 在一个n个点,m条边的有向无环图中,求出所有从1到n 的路径的中位数的最大值 一条路径的中位数指的是:一条路径有 n 个点, 将这 n 个点的权值从小到大排序后,排在位置 ⌊n2⌋ ...
- 3486 ( Interviewe )RMQ
Problem Description YaoYao has a company and he wants to employ m people recently. Since his company ...
- Win10系统下插入耳机前面板无声后面板有声的处理
问题描述: 当耳机插入后面板绿色口(注意:耳机扬声器为绿色口,红色为话筒麦克风:前后面板一样):可以听到声音,但是转到前面板插入后,无声音:调出声音面板发现声音可随音度波动 处理步骤: 1.保证插牢接 ...
- .NetCore模拟Postman的BasicAuth生成Authrization
一.思路 BasicAuth 是一种简单权限,传输UserName=<userName>,Password=<password> 1.用:连接Username,Password ...
- 学Python的第六天
今天发愤图强,死学Python!!!! 为此小编还买了自己喜欢的McPython! 从小老师就说兴趣是最好的老师,所以呢买这本书是想通过我的世界这款游戏来提高自己的学习兴趣!!! 当然也有私心啦... ...
- linux下的mongodb的备份与恢复
mongodb的备份有两种方式: 1.直接拷贝数据目录下的一切文件 2.使用mongodump方式 3.主从复制:http://www.cnblogs.com/huangxincheng/archiv ...
- 2019hdu多校3 hdu4893(线段树单点 区间更新
补这题主要是因为第三个操作要维护区间,而不是点,否则会T. https://vjudge.net/problem/HDU-4893 题意:输入n.q.表示有n个数,初始化默认这n个数都为零,有q次操作 ...
- solr的一些查询语法
以下内容来自solr中国 1.1. 首先假设我的数据里fields有:name, tel, address 预设的搜寻是name这个字段, 如果要搜寻的数据刚好就是 name 这个字段,就不需要指定搜 ...
- jmeter post请求在终端传参,并且指定请求参数文件
命令:jmeter -n -t jmeter_1.jmx -l report/report30.jtl -Jnum=3000 -e -o webresult/3000result ...
- bzoj4940 [Ynoi2016]这是我自己的发明 莫队+dfs序
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4940 题解 对于换根操作,处理方法就很套路了. 首先先假定以 \(1\) 为根做一遍 dfs, ...