什么是JavaScript?
JavaScript是一种基于对象和事件驱动的客户端脚本语言,最初的设计是为了检验HTML表单输入的正确性。
JavaScript的发展历史
JavaScript
要了解JavaScript,我们首先要回顾一下JavaScript的诞生。
在上个世纪的1995年,当时的网景公司正凭借其Navigator浏览器成为Web时代开启时最著名的第一代互联网公司。
由于网景公司希望能在静态HTML页面上添加一些动态效果,于是叫Brendan Eich这哥们在两周之内设计出了JavaScript语言。你没看错,这哥们只用了10天时间。
为什么起名叫JavaScript?原因是当时Java语言非常红火,所以网景公司希望借Java的名气来推广,但事实上JavaScript除了语法上有点像Java,其他部分基本上没啥关系。
ECMAScript
因为网景开发了JavaScript,一年后微软又模仿JavaScript开发了JScript,为了让JavaScript成为全球标准,几个公司联合ECMA(European Computer Manufacturers Association)组织定制了JavaScript语言的标准,被称为ECMAScript标准。
所以简单说来就是,ECMAScript是一种语言标准,而JavaScript是网景公司对ECMAScript标准的一种实现。
那为什么不直接把JavaScript定为标准呢?因为JavaScript是网景的注册商标。
不过大多数时候,我们还是用JavaScript这个词。如果你遇到ECMAScript这个词,简单把它替换为JavaScript就行了。
JavaScript版本
JavaScript语言是在10天时间内设计出来的,虽然语言的设计者水平非常NB,但谁也架不住“时间紧,任务重”,所以,JavaScript有很多设计缺陷,我们后面会慢慢讲到。
此外,由于JavaScript的标准——ECMAScript在不断发展,最新版ECMAScript 6标准(简称ES6)已经在2015年6月正式发布了,所以,讲到JavaScript的版本,实际上就是说它实现了ECMAScript标准的哪个版本。
由于浏览器在发布时就确定了JavaScript的版本,加上很多用户还在使用IE6这种古老的浏览器,这就导致你在写JavaScript的时候,要照顾一下老用户,不能一上来就用最新的ES6标准写,否则,老用户的浏览器是无法运行新版本的JavaScript代码的。
JavaScript的组成
完整的JavaScript是由ECMAScript(语法)、Browser Objects(DOM、BOM)(特性)组成的。
在HTML中使用JavaScript
可以在head或body中使用<script>
嵌入javaScript脚本
|
|
JavaScript语法
- JavaScript的注释与分号
|
|
- ECMAScript中的一切(变量、函数名和操作符)都区分大小写。
JavaScript的标识符
12345671、什么是标识符?变量、函数、属性的名字,或者函数的参数。2、标识符的命名规则:(1)、由字母、数字、下划线(_)或美元符号($)组成(2)、不能以数字开头(3)、不能使用关键字、保留字等作为标识符。什么是变量
ECMAScript的变量是松散类型
松散类型:可以用来保存任何类型的数据
换句话说,每个变量仅仅是一个用于保存值的占位符而已。
|
|
JavaScript数据类型
ECMAScript中有5种简单数据类型(也称为基本数据类
型):Undefined、Null、Boolean、Number和
String。
还有1种复杂数据类型:Object。
typeof
123语法:typeof 变量 或 typeof(变量)功能:检测变量类型返回值:string类型,有可能是:string、number、boolean、object、undefined、functionundefined
12undefined类型只有一个值,即特殊的undefined。说明:一般而言,不存在需要显式地把一个变量设置为undefined值的情况。null
12341、null值表示一个空对象指针2、如果定义的变量准备在将来用于保存对象,那么最好将改变始化为null而不是其他值。说明:undefined值是派生自null值的,所以undefined==null返回结果是true。Number
12345Number:表示整数和浮点数NaN:即非数值(Not a Number)是一个特殊的数值说明:1、任何涉及NaN的操作(例如NaN/10)都会返回NaN。2、NaN与任何值都不相等,包括NaN本身。isNaN()
123456语法:isNaN(n)功能:检测n是否是“非数值”返回值:boolean参数:参数n可以是任何类型说明:isNaN()在接收到一个值之后,会尝试将这个值转换为数值。某些不是数值的值会直接转换为数值。
数值转换
有3个函数可以把非数值转换为数值:Number()、parseInt()和
parseFloat()。其中Number()可以用于任何数据类型,而parse
Int()和parseFloat()则专门用于把字符串转换成数值。
parseInt()
12345parseInt() :会忽略字符串前面的空格,直至找到第一个非空格字符。说明:1、parseInt():转换空字符串返回NaN。2、parseInt()这个函数提供第二个参数:转换时使用的基数(即多少进制parseFloat()
123parseFloat:从第一个字符开始解析每个字符,直至遇见一个无效的浮点数字符为止说明:除了第一个小数点有效外,parseFloat()与parseInt()的第二个区别在于它始终都会忽略前导的零。String
String类型用于表示由零或多个16位Unicode字符组成
的字符序列,即字符串。字符串可以由双引号(”)或
单引号(’)表示。
toString()与String()
- Boolean
用于表示真假的类型,即true表示真,false表示假
|
|
JavaScript操作符
- 算数操作符 + : 加 - : 减 * : 乘 / : 除 %:取余
- 递增和递减
1、递增
++a与a++都是对a进行递增的操作
区别:
++a先返回递增之后的a的值
a++先返回a的原值,再返回递增之后的值
实例:123456789101112131415161718192021222324<!doctype html><html lang="en"><head><meta charset="UTF-8"><title>算数操作符</title></head><body><script>var num1=10,num2=5,num3=num1++-num2, // ++num1 num1=num1+1x1=20,x2=30,x3=--x1+x2--;console.log(num1); // 11 // 11console.log(num3); // 16 // 5console.log(x1); // 19console.log(x2); // 29console.log(x3); // 19+30=49</script></body></html>
2、递减同理
比较操作符
>
、<、>=、<=、==、===、!=、!====:相等,只比较值是否相等
===:相等,比较值的同时比较数据类型是否相等
!=:不相等,比较值是否不相等
!==:不相等,比较值的同时比较数据类型是否不相等
返回值:boolean型
三元操作符
语法:条件 ? 执行代码1:执行代码2
说明:
可代替简单的if语句,如果条件成立,执行代码1,否则执行代码2
|
|
- 逻辑操作符
- 逻辑与
&& 与 (只要有一个条件不成立,返回false)
说明:在有一个操作数不是布尔值的情况,逻辑与操作就不一定返回值,
此时它遵循下列规则:
1、如果第一个操作数隐式类型转换后为true,则返回第二个操作数
2、如果第一个操作数隐式类型转换后为false,则返回第一个操作数
3、如果有一个操作数是null,则返回null
4、如果有一个操作数是NaN,则返回NaN
5、如果有一个操作数是undefined,则返回undefined
- 逻辑与
|
|
- 逻辑或
|| 或 (只要有一个条件成立,返回true)
说明:在有一个操作数不是布尔值的情况,逻辑与操作就不一定返回
值,此时它遵循下列规则:
1、如果第一个操作数隐式类型转换后为true,则返回第一个操作数
2、如果第一个操作数隐式类型转换后为false,则返回第二个操作数
3、如果两个操作数是null,则返回null
4、如果两个操作数是NaN,则返回NaN
5、如果两个操作数是undefined,则返回undefined - 逻辑非
! 非
说明:
1、无论操作数是什么数据类型,逻辑非都会返回一个布尔值
2、 ! ! 同时使用两个逻辑非操作符时:
第一个逻辑非操作会基于无论什么操作数返回一个布尔值,
第二个逻辑非则对该布尔值求反。
|
|