第一章 JavaScript诞生
为什么JavaScript会出现呢?
先看一下他出现的背景:1当时绝大多数因特网用户上网速度仅仅为28.8kbit/s。2因表单验证和服务器频繁交互数据,而加重了用户负担。
第一章知识点:
1.JavaScript组成:
核心:ECMAScript,主要规定了JavaScript的语言基础;
DOM(文档对象模型),提供访问和操作网页内容的方法和接口;
BOM(浏览器对象模型),提供了与浏览器交互的方式和接口;
2.五大主流浏览器:
IE,Firefox,Safari,chrome,opera
3.API(application programming interface)应用程序编程接口
(理解比较浅显啊)是用来管理应用程序间沟通的一些要求。
举个栗子:
以Yelp的应用为例,当你搜索附近的餐馆时,位置信息会出现在上,Yelp没有开发自己的地图。通过Google地图的API,Yelp应用把自家的信息——餐饮地址、用户评价等——发送到内部的Google地图功能,最后得到一幅带有周围餐馆位置的地图展示给用户,这些都显示在Yelp应用内部。(http://www.leiphone.com/news/201406/api.html 这篇文章将的很详细)
第二章 在HTML中使用JavaScript
2.1<script>元素
<script>元素的重要属性:
async:异步脚本,先下脚本,但不妨碍其他操作,但是加载完就执行;
defer:延迟脚本,外部脚本在文档完全解析后执行;
只有script的:遇到js就下载,下完了执行。(所以一般吧js文件放在body最后,为的是让html完全解析后,再加载js)
直接上图:
此图告诉我们以下几个要点:
defer和async在网络读取(下载)这块儿是一样的,都是异步的(相较于 HTML 解析)
它俩的差别在于脚本下载完之后何时执行,显然defer(在html解析完成后执行)是最接近我们对于应用脚本加载和执行的要求的,async则是一个乱序执行的主,反正对它来说脚本的加载和执行是紧紧挨着的,所以不管你声明的顺序如何,只要它加载完了就会立刻执行
内部嵌入文件和外部文件:
内部嵌入文件格式:
<script type="text/javascript"></script>
外部文件格式:
<script type="text/javascript" src="example.js" ></script>
<script type="text/javascript" src="http://www.somewhere.com/afile.js"></script>
文档模式
<!DOCTYPE html>
文档模式分类:
混杂模式(quirk mode)
标准模式(standard mode)
准标准迷失(almost standard mode)。
如果文档开始未发现文档类型说明,则所有浏览器会开启混杂模式。
<noscript>
当浏览器不支持脚本,或者浏览器支持脚本但是脚本被禁时,用<noscript>可以让页面平稳退化。
<noscript>
中间可以写任何能出现在<body>中的html元素
<p>这是例子,本页面需要浏览器支持(启用)JavaScript</p>
</noscript>
第三章 基本概念
语法:
1.区分大小写
2标识符(变量,函数名,属性的名字,或者是函数的参数):
第一个字符必须是字母,下划线或者美元符号,其他字符可以是字母,下划线,美元符号和数字。
按照惯例,标识符用驼峰大小写格式,即第一个字母小写,剩下每个单词首字母大写。
保留字,关键字不能用做标识符
3注释
// 单行注释
/*
* 多行注释
*/
顺便来复习一下html和css注释。
<!--html注释 -->
/*css注释*/
4严格模式
在脚本顶部添加"ues strict"编译指示,来让支持JavaScript的引擎切换到严格模式。
5语句
单行语句用分号结尾
代码块以({)开始,(})结束
6变量
局部变量:var message="hi",是作用域内的局部变量,比如函数中使用var定义一个变量。变量 ,在退出函数后被销
可以一条语句定义多个变量:
var message="hi" ,
age=29;
全局变量:message="hi"
数据类型:
五个基本数据类型(undefined,null,boolean,number,string)
+一个复杂数据类型Object。
用typeof操作符可以检测变量数据类型。
1.undefined类型
只有一个值
在使用var声明变量,但是未对他初始化时,变量值为undefined。
var age
alert(age) //产生错误
alert(typeof age)//"undefined"
2.Null类型
只有一个值,null
null表示一个空对象指针,所以用typeof检测null时,返回"object"
undefined是null的一个派生,所以alert(null==undefined) //true
只要想保存对象的变量还没有真正保存对象,就应该明确的让该变量保存null值。
3.Boolean类型
有两个值,true和false;
JavaScript中的所以类型的值都有与这两个值等价的值!
举个栗子:
var message="hello world";
if(messae){
alert("Value is true!")
}
message自动转换为true
4.Number类型
分为整数和浮点数值(双精度数值);
整数可以用十进制,八进制,十六进制表示,但最后都是被转换为十进制;
浮点数值,就是数值中包含一个小数点,且小数点后有至少一个值;
2016/2/3
科学计数法:3.125e7=31250000;3.125e-4=0.0003125;
如果数值超过JavaScript的数值范围,则会自动转换成Infinity值;确定一个数值是不是有穷可以用isFinite()函数。
NaN(Not a Number)特殊数值,表示一个本来要返回数值的操作数未返回数值的情况;特点:任何数除以0,返回NaN;NaN与任何数都不相等,包括他本身。isNaN()函数可以确定参数是否“不是数值”。
数值转换:
三个可以把非数值转化数值的函数
Number()
parseInt(要转换的值,进制参数)更常用来处理整数。如果第一个字符不是数字或者符号,就返回NaN;如果是就继续解析第二个字符,直到遇到非数字字符。可以解析八进制和十六进制。小数点后面的会被忽略。
parseFloat()处理浮点数值,第一个小数点后有效,第二个小数点无效。
string类型
字符串
有length属性,表示字符串长度
字符串值是不可改变的,如果改变某个变量保存的字符串,就要销毁原来的字符串,然后在用另一个包含新值的字符串填充该变量。
转换为数值:
toString(),null和undefined没有此方法;
String(),值有toString()方法就用此方法。值是null,返回"null",值是undefined,返回"undefined"
Object类型
对象是一组数据和功能的集合;
用new操作符后跟要创建的对象类型的名称来创建;
valueOf(),返回对象的字符串,数值或者布尔值表示;
操作符
一元操作符(只操作一个值得操作符)
1. ++ 和--
前置型 var age=29 ; ++age; //30
后置型var age=29; age++; //30
区别:后置型操作符在包含他的语句被求值之后执行;
eg:var num1=2;
var num2=20;
var num3=num1-- + num2; //22
var num4=num1+num2; //21
2.一元加和减操作符
+
- 可以用来表示负数
非数值用+或-时,会先将值转换为数值再进行计算
布尔操作符
逻辑非(!)
逻辑与(&&)
逻辑或(||)
乘性操作符
乘法*
除法/
加性操作符
加法+
减法-
关系操作符
大于>
小于<
大于等于>=
小于等于<=
相等操作符
相等(==)和不相等(!=),先转换再比较
全等(===)和不全等(!==),仅比较而不转换
条件操作符
variable = boolean_expression ? true_value : false_value;
eg:var max=(num1>num2) ? num1 : num2;
如果num1大于num2(返回true),给max赋值为num1,反之关系式会返回false,给max赋值为num2.
赋值操作符
复合赋值
eg:var num=10; num+=10 //等于num=num+10
乘/赋值 *=
除/赋值 /=
模/赋值 %=
加/赋值 +=
减/赋值 -=
左移/赋值 <<=
有符号右移/赋值 >>=
无符号右移/赋值 >>>=
逗号操作符
逗号操作符可以让一个语句中执行多个操作:var num1=2,num2=3,num3=4;
可以用来赋值,返回最后一项:var num=(1,2,3,4,5); //num值是5
2016/2/4