03JavaScript基础
一、语法
1.区分大小写
ECMAScript中的一切,包括变量、函数名和操作符都是区分大小写的
2.标识符
所谓标识符,就是指变量、函数名、属性的名字,或者函数的参数。
标识符命名规则:
-
第一个字符必须是字母、下划线(_)或者美元符号($)
-
其他字符可以是字母、下划线、美元符号或数字
-
不能把关键字、保留字、true、false和null作为标识符
3.注释
ECMAScript使用C风格的注释,包括单行注释和块级注释
-
单行注释 //
-
多行注释(块级注释) /* 被注释内容 */
4.直接量(字面量literal)
所有直接量(字面量),就是程序中直接显示出来的数据值
100 //数字字面量 ‘前端开发' //字符串字面量 false //布尔字面量 /js/gi //正则表达式字面量 null //对象字面量
二、关键字和保留字
1.关键字
ECMAScript-262描述了一组具有特定用途的关键字,一般用于控制语句的开始或结束,或者用于执行特定的操作等
ECMAScript关键字
break、else、new、var、case、finally 、return 、void、catch、for、switch、while、continue、 function、this、with、default、if、throw、delete、in、try、do、instanceof、typeof等
2.保留字
ECMAScript-262描述了另一组不能作为标识符的保留字,尽管保留字在JavaScript中还没有特定的用途,但是它们很有可能在将来被作为关键字
ECMAScript保留字
abstract、enum、int、short、boolean、export、interface、static、byte、extends、long、 super、char、final、native、synchronized、class、float、package、throws、const、goto、 private、transient、debugger、implements、protected、volatile、double、import、public等
三、变量
ECMAScript的变量是松散类型的,所谓松散类型就是用来保存任何类型的数据
定义变量时要使用var操作符(var 是关键),后面跟一个变量名(变量名是标识符)
<script type="text/javascript"> var company; alert(company); //alter在浏览器中弹出一个弹框 </script>
所谓变量,就是可以初始化后可以再次改变的量。ECMAScript属于弱类型(松散类型的)语言,可以同时改变不同类型的量
<script type="text/javascript"> var company = 'IT教育'; var company = '前端开发'; alert(company); </script>
注意:虽然可以改变不同类型的量,但对于后期维护就带来了困难,而且性能也不高,导致成本很高
四、数据类型
1.数据类型介绍:
ECMAScript中有五种简单数据类型,一种复杂数据类型
ECMAScript不支持任何创建自定义类型的机制,JavaScript中的所有值都应该是以下六种之一:
-
undefined
-
null
-
boolean
-
number
-
string
-
object(复杂类型)
2.typeof操作符
typeof操作符是用来检测变量的数据类型,对于值或变量使用typeof操作符会返回以下字符串:
-
undefined #未定义
-
boolean #布尔值
-
string #字符串
-
number #数值
-
object #对象或null
-
function #函数
typeof操作符可以操作变量,也可以操作字面量,typeof是操作符而非内置函数
注意:函数在ECMAScript中是对象,而不是一种数据类型
所以,使用typeof来区分function和object是非常有必要的
3.undefined类型
undefined类型只有一个值,即特殊的undefined
在使用var声明变量,但没有对其初始化时,这个变量的值就是undefined
4.null类型
null类型是一个只有一个值的数据类型,即特殊的值null,它表示一个空对象引用(指针),而typeof操作符检测null会返回object
注意:undefined是派生自null的
5.boolean类型
boolean类型有两个值:true和false,而true不一定等于1,false也不一定等于0
JavaScript是区分大小写的,True和False或者其他都不是boolean类型的值
虽然boolean类型只有true和false两种,但ECMAScript中所有类型的值都与true或false等价转换的值
要将一个值转换为其对应的boolean值,可以使用转型函数boolean()<也称为强制转换>
boolean隐式转换
在if条件语句里面的条件判断,就村子隐式转换
其他类型转换成Boolean类型规则
数据类型 | 转换为TRUE值 | 转换为FALSE值 | |
---|---|---|---|
boolean | true | false | |
string | 任何非空字符串 | 空字符串 | |
number | 任何非零数字值(包括无穷大) | 0和NaN | |
object | 任何对象 | null | |
undefinde | undefined |
6.number类型
number类型包含两种数值:整数类型和浮点类型
注意:ECMAScript会自动将可以转换为整型的浮点数值转成为整型
NaN
NaN 即非数值(Not a Number)是一个特殊的值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就会抛出错误)
ECMAScript提供了isNaN()函数,来判断这个值到底是不是NaN
isNaN()函数在接收到一个值之后,会尝试将这个值转换为数值
7.string类型
string类型用于表示由于零或多个16位Unicode字符组成的字符序列,即字符串
字符串可以由双引号或单引号表示,引号不行成对出现
ECMAScript的字符串是不可变的,字符串一旦创建,它们的值就不能改变。
要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量
8.object类型
ECMAScript中的对象其实就是一组数据和功能的集合
对象可以通过执行new操作符后跟要创建的对象类型的名称来创建
var obj = new Object();
Object()里面可以传参,可以是传数值、字符串、布尔值等,而且还可以进行相关的计算
五、运算符
ECMAScript描述了一组用于操作数据值的运算符,包括:
-
一元运算符
-
算术运算符
-
关系运算符
-
逻辑运算符
-
三元运算符
-
.....
ECMAScript中的运算符适用于很多值,包括字符串、数值、布尔值、对象等
1.一元运算符
只能操作一个值的运算符叫做一元运算符
递增++和递减——
2.算术运算符
ECMAScript定义了五个算术运算符:
加减乘除求模(取余)<+、-、*、/、%>
3.关系运算符
用于进行比较的运算符称为关系运算符:
小于(<)、大于(>)、小于等于(<=)、大于等于(>=)、等于(==)、
不等于(!=)、全等(恒等)(===)、不全等(不恒等)(==)
当关系运算符操作非数值时要遵循以下规则:
-
两个操作数都是数值,则数值比较
-
两个操作数都是字符串,则比较两个字符串对应的字符编码值
-
两个操作数有一个是数值,则将另一个转换为数值,再进行数值比较
-
两个操作数有一个是对象,则先调用valueof()方法或tostring()方法,再用结果比较
4.逻辑运算符
逻辑运算符通常用于布尔值的操作,一般和关系运算符配合比较
有三个逻辑运算符:
-
AND(逻辑与)<&&>
-
OR(逻辑或)<||>
-
NOT(逻辑非)<!>
5.三元运算符
三元运算符其实是if语句的简写形式
<script type="text/javascript"> var box = 5 > 4 ? '对' : '错'; //对,5>4返回true则把'对'赋值给box,反之。 </script>
表达式1 > 表达式2 ? 结果1 : 结果2
-
如果表达式1 > 表达式2 则返回结果1
-
如果表达式1 < 表达式2 则返回结果2s