一、JavaScript的语法
(一)JavaScript的注释和分号
//单行注释/**/多行注释
语句结束使用分号,如果省略,则由解析器确定语句结尾。
(二)JavaScript的标识符
1.什么是标识符
变量、函数、属性的名字,或者函数的参数。
PS:JavaScript中的一切标识符都区分大小写。
2.标识符的命名规则
(1)、由字母、数字、下划线(_)或美元符号($)组成。
(2)、不能以数字开头。
(3)、不能使用关键字、保留字等作为标识符。
(三)变量
1.什么是变量?
Js的变量是松散类型。
松散类型含义:可以用来保存任何类型的数据,也就是说,每个变量仅仅是一个用于保存值的占位符。
<script> var a = 1; var b = "我的天"; var c = null; var d = true; var e = new Array(); </script>
2.变量声明与赋值
(1)变量的声明
一次声明一个变量: var 变量名
一次声明多个变量: var id,sex,age,name="poorpenguin"
(2)变量的赋值
声明的同时赋值: var 变量名 = 值;
先声明后赋值: var 变量名; 变量名 = 值;
ps:省略var的声明的变量是全局变量(并不推荐这样声明全局变量)
二、JavaScript数据类型
(一)js的数据类型
JavaScript中有5种简单数据类型(underfined、null、boolean、number、string)和1种复杂数据类型(object)
1.typeof 函数
功能:检测变量类型
返回值:string类型,有可能是:string、number、boolean、object、underfined、function
2.underfined类型
underfined类型只有一个值,即特殊的underfined。
一般情况,不存在需要显示地把一个变量设置为underfined的情况。
只声明变量,不赋值,该变量就是underfined类型
值为
3.null值
null值表示一个空对象指针如果定义的变量准备在将来用于保存对象,那么最好将变量初始化为null而不是其他值。
结果为
ps:underfined值是派生自null值的,所以underfined == null 的结果是true。
4.number类型
number类型的有整数和浮点数,以及一个特殊数值NaN(Not a Number)。
(1)NaN
“abc”-12的值为NaN。
NaN 即非数值是一个特殊的数值;typeof(NaN)的值为number;
ps:
a.任何涉及NaN的操作(例如NaN/10,NaN+4)都会返回NaN。
b.NaN与任何值都不相等,包括NaN本身。
结果为
(2)isNaN函数
语法:isNaN(n)
功能:检测n是否是“非数值”。
返回值:boolean类型;true表示是非数值;false表示是数值。
参数:n可以是任何类型
PS:isNaN()在接收到一个值之后,会尝试将这个值转换为数值。某些不是数值的值会直接转化为数值。
结果为字符串“123”被isNaN()接收后,被隐式转换为数值。
(3)数值转换
Number():
parseInt():
parseFloat():
5.string类型
(1)string类型介绍
string类型由零或多个16位unicode字符组成的字符序列,即字符串。
字符串可以用双引号(""英文半角)或者单引号(''英文半角)表示。
(2)toString()函数
PS:在不知道要转换的值是不是null或underfined的情况下,使用String()函数,不然会报错。
(3)String()函数
6.boolean类型
用于表示真假的类型,即true表示真, false表示假;
逻辑运算返回的结果多为boolean类型的。
类型转换:
(1)除0之外的所有数字,转换为boolean型都为true
(2)除""之外的所有字符,转换为boolean型都为true
(3)null和underfined转换为boolean型为 false
三、JavaScript基本运算
将同类型的数据(常量、变量、函数等),用操作符按一定的规则链接起来的、有意义的式子称为表达式。(一)JavaScript操作符
1.算数操作符
+:加; -:减; *:乘; /:除; %:取余;
(1)递增
++a和a++都是对a进行递增的操作
区别:
++a先返回递增后的a的值
结果为
a++先返回a的值原值,再返回递增后的值
结果为
(2)递减
原理同递增一样
(3)隐式转换
使用算数元素符时,运算符两边的数据可以是任意类型的。之所以不同的数据类型之间可以做运算,是因为JavaScript引擎在运算之前会把他们进行隐式类型转换.
4+"true"; //5 4-"1"; //3 5*"3"; //15
注意!
"2" + 3; // "23" 2 + "3"; // "23" 1 + 2 + "3"; // "33" (1 + 2) + "3"; // "33" 下面有点特殊 1 + "2" + 3; // "123"
2.赋值操作符
简单赋值:=。
复合赋值:+=、-=、/=、%=、*=。
a+=12 等价于 a=a+12其他复合赋值一样。
3.比较操作符
==:相等,只比较值是否相等。
true == 1 //true 1 == "1" //true
===:相等,比较值的相等的同时也比较数据类型是否相等。
true === 1 //false "1" === 1 //false true === "1" //false
!=:不相等,比较值是否不相等
1 != "1" //false true != "1" //false true != 1 //false
!==:不相等,比较值的同时比较数据类型是否不相等
1 !== "1" //true true !== "1" //true true !== 1 //true
返回值:boolean
4.三元操作符
语法:
条件? 执行代码1 : 执行代码2
说明:
可替代简单的if语句。
如果条件成立,执行代码1,否则执行代码2。
5.逻辑操作符
&&:与
|| :或
!:非 :
(1)逻辑与(&&)
1 && "" && true && null //返回""b、操作数的隐式转换都为true,返回最后一个操作数的值
"56" && "imooc" && "poorpenguin" //返回"poorpenguin"
(2)逻辑或(||)
||只要有一个条件成立,返回 true
PS:在有一个操作数不是布尔的情况下,逻辑或操作就不一定布尔值。
a、操作数中隐式转换有true的情况下,返回隐式转换为true的第一个操作数的值。
"" || a || 2 ||"1" //返回值为2
b、操作数的隐式转换都为false,返回最后一个操作数的值
"" || a || 0 || null //返回值为null
(3)逻辑非(!)
无论操作数是什么数据类型,逻辑非都会返回一个布尔值。
ps:可以使用 !! 将一个操作数转换为布尔类型。
a、第一个逻辑非操作会基于无论什么操作数返回一个布尔值,
b、第二个逻辑非则对该布尔值求反
var a; //a的类型为underfined console.log(!!a); //返回值为false