一.javascript发展历史:
1.1994年,网景公司(Netscape)发布了Navigator浏览器0.9版,这是世界上第一款比较成熟的网络浏览器,轰动一时。
但是这是一款名副其实的浏览器--只能浏览页面,浏览器无法与用户互动,当时解决这个问题有两个办法,
一个是采用现有的语言,许它们直接嵌入网页。
另一个是发明一种全新的语言。
2.1995年Sun公司将Oak语言改名为Java,正式向市场推出。Sun公司大肆宣传,许诺这种语言可以"一次编写,到处运 行"(Write Once, Run Anywhere),它看上去很可能成为未来的主宰。
3.网景公司动了心,决定与Sun公司结成联盟, 后来验证java在浏览器客户过于臃肿,适合服务端开发。
4.网景公司动了心,决定与Sun公司结成联盟, 后来验证java在浏览器客户过于臃肿,适合服务端开发。
5.1996年8月,微软模仿JavaScript开发了一种相近的语言,取名为JScript
6.1996年11月,Netscape公司决定将JavaScript提交给国际标准化组织ECMA (European Computer Manufacturers Association 欧洲计算机制造商协会),希望JavaScript能够成为国际标准,以此抵抗微软。
7. 1997年7月,ECMA组织发布262号标准文件(ECMA-262)的第一版,规定了浏览器 脚本语言的标准,并将这种语言称为ECMAScript。这个版本就是ECMAScript 1.0版。
8.ECMAScript和JavaScript的关系是,前者是后者的规格,后者是前者的一种实现。在日常场合,这两个词是可以互换的。
二.JavaScript能够干什么?
1.浏览器客户端开发(前端开发)
1. 常见的网页效果【表单验证,轮播图。。。】
2. 与H5配合实现游戏【水果忍者: http://www.jq22.com/demo/html5-fruit-ninja/】
3. 实现应用级别的程序【http://naotu.baidu.com】
4. 实现统计效果【http://echarts.baidu.com/examples/】
5. 地理定位等功能【http://lbsyun.baidu.com/jsdemo.htm#i4_5】
6. 在线学编程【https://codecombat.163.com/play/】
7. js可以实现人工智能【面部识别】
2.服务端开发:node.js
3.pc端桌面应用开发
三.JavaScript的组成
1. ECMASCRIPT: 定义了javascript的语法规范,描述了语言的基本语法和数据类型
2. BOM (Browser Object Model): 浏览器对象模型
- 有一套成熟的可以操作浏览器的 API,通过 BOM 可以操作浏览器。比如: 弹出框、浏览器跳转、获取分辨率等
3. DOM (Document Object Model): 文档对象模型
- 有一套成熟的可以操作页面元素的 API,通过 DOM 可以操作页面中的元素。比如: 增加个 div,减少个 div,给div 换个位置等
总结: JS 就是通过固定的语法去操作 浏览器 和 标签结构 来实现网页上的各种效果
四.JavaScript代码的书写位置
1.行内js代码(不推荐)
<a href='javascript:alert('11111')'>点击弹出111</a>
2.内嵌式
<script tyoe='text/javascript'>
alert('我是一个弹出层')
</script>
3.外联式
<script src='index.js'></script>
五.js中的注释
//我是单行注释
/* 我是多行注释*/
六.变量
解释:变量指的是在程序中保存数据的一个容器
- 变量是计算机内存中存储数据的标识符,根据变量名称可以获取到内存中存储的数据
- 也就是说,我们向内存中存储了一个数据,然后要给这个数据起一个名字,为了是我们以后再次找到他
- 变量的本质是内存中一个存储单元
- 语法: var 变量名 = 值
1.
//定义一个变量
var num;
//给一个变量赋值
num = 100;
注意:一个变量只能储存一个值,若同时给予多个值,最后的将覆盖前面的值。且JS区分大小写。
2.命名的规则
1.必须是字母、数字、下划线和$符号组成。
2.不能以数字开头
3. 不能以特定关键字命名。如var 等
4.不能是保留字,将来有特殊用处的单词。
规范化:
1.命名时要语义化
2.驼峰命名法。如:userName;
3.不能使用中文。
3.控制台的输出
1.console.log(‘显示输出内容’);
2.consle.log(‘显示输出变量内容’);
4.内存结构
1.栈区域和堆区域
2.变量本质上是内存中的储存单元
七.数据类型
1.分类
基本数据类型和复杂型(此处暂时略过)
1.数字类型:number
所有数字:1,2,3.....
特殊数字:NaN,not a Number 非数字值
2.字符串:string
用引号赋值:'helloworld'
var userName='JackMa' //创建一个名为suerName的字符串,字符串的值为'JackMa'
3.布尔类型:boolean
true 成立(真) false成立(假)
例:var isDelete =true/false
4.空类型:null
var isObject=null
5. 未被定义的对象
undefined 例:var age
程序判断的类型
<script>
var userName='JackMa'
console.log(typeof userName)
</script>
数据类型的转换:
例:字符串string->其他类型(number,boolean,null(object),undefined)
<script>
var message='100'
console.log(message,typeof message)
console.log(Number(message),typeof Number(message))
</script>
1> 数字类型Number
var message='100' Number->100 Number(message') ->100 Number('100')->100
Number('jack')->NaN Number(' ') ->0
2>PaeseInt()变量运算
ParseInt('100')->100
特点:1.从左向右转换
2.遇到数值为字符串转换为数字,遇到非数字结束转换(如果第一个非数字,结束输出NaN)
3.小数->取整
3>ParseFloat()
ParseFloat('10.98')->10.98
4>其它数据类型转换为布尔变量:boolean
''->fales; 0,NaN->'false' undefined->'false' 'null'->false 'hello'->true 10->true
5>isNaN 检出是否为非数值
isNaN =>非数值类型数据 true
isNaN =>不是非数值类型数据 false
1.连接符 +
在JavaScript中有两层含义
1.连接符 'hello’ + 'world' ->'helloworld'
2.算数运算加法运算
只要加号任意一边为字符串,则为连接符
隐式类型转换 10+ '' ->'10'
运算符: + - * / %
除去加号,其他符号任意一边为字符串,就会自动转换为数字进行运算
赋值运算符
例:var a=10
a+=10 =>a=a+10
比较运算 > < >= <= == === != !==
==是两边的值相等
===是两边的值与数据类型都相等
逻辑运算
1.且运算(与运算) && 同真为真,有假为假 与运算时,若左侧结果为false,则右边不需参加运算
2.或运算 || 有真为真,同假为假
3. 非运算(取反运算) ! 非真则假,非假为真
注意:短运算 false&&true -> false
自增与自减
a++,a-- a+1=a,a-1=a 运算时先运算在赋值
++a,--a a=a+1,a=a-1 运算时先赋值,在运算