一、JS的基本语法
1、语句:
JS的代码是一行一行执行的,一般一行就是一个语句,一个语句后面要用分号隔开
2、变量:
变量的声明和变量的赋值,两条语句,可以一起写 var a; a = 1; 等同于 var a = 1; (注意:JS的变量名区分大小写,A和a是两个不同的变量)
JS引擎的工作方式:先解析代码,获取所有被声明的变量,然后再一行一行地运行,即所有的变量声明的语句,都会被提升到代码的头部,最先执行,这就叫做代码的提升。
3、标识符
识别各种值的合法名称
标识符的命名规则:
第一个字符,可以是任意 Unicode 字母(包括英文字母和其他语言的字母),以及美元符号($)和下划线(_)。
第二个字符及后面的字符,除了 Unicode 字母、美元符号和下划线,还可以用数字0-9。
4、注释
5、区块
使用大括号,把多个相关语句组合在一起,称为区块block。
对于var命令来说,使用区块并不能构成单独的作用域,即是否使用区块并无区别。
区块一般用在更复杂的语法结构中,比如:for,if,while,function等。
6、条件语句
6.1 if结构
if (条件表达式) { 语句; }
6.2 if...else结构
if(条件表达式)
{
语句1;
}
else
{
语句2;
}
对同一个变量进行多次判断时,多个if...else语句可以连写在一起。
6.3 switch结构
多个if...else连在一起使用的时候,可以转为使用更方便的switch结构。
switch (fruit) {
case "banana":
// ...
break;
case "apple":
// ...
break;
default:
// ...
}
注意:每个case代码块内部的break语句不能少,否则会接下去执行下一个case代码块,而不是跳出switch结构。
6.4 三元运算符
(条件) ? 表达式1 : 表达式2
如果“条件”为true,则返回“表达式1”的值,否则返回“表达式2”的值。
7. 循环语句
7.1 while循环
While语句包括一个循环条件和一段代码块,只要条件为真,就不断循环执行代码块。
while (条件) {
语句;
}
7.2 for循环
可以指定循环的起点、终点和终止条件。
for (初始化表达式; 条件; 递增表达式) {
语句
}
7.3 do...while 循环
do {
语句
} while (条件);
先运行循环体,后判断条件(即不管条件是否为真,do...while循环至少执行一次)
7.4 break语句和continue语句
break语句用于跳出循环,例如:
var i = 0;
while(i < 100) {
console.log('i 当前为:' + i);
i++;
if (i === 10) break;
}
也可跳出for循环 continue语句用于终止本轮循环,开始下一轮循环,例如:
var i = 0;
while (i < 100){
i++;
if (i % 2 === 0) continue;
console.log('i 当前为:' + i);
}
7.5 标签
相当于定位符,用于跳转到程序的任意位置,例如:
top:
for (var i = 0; i < 3; i++){
for (var j = 0; j < 3; j++){
if (i === 1 && j === 1) break top;
console.log('i=' + i + ', j=' + j);
}
}
可直接跳出双层循环。
二.数据类型
1.数据类型概述
1.1 数据类型分类
一共有六种:
- 数值(number):整数和小数(比如
1和3.14)。 - 字符串(string):文本(比如
Hello World)。 - 布尔值(boolean):表示真伪的两个特殊值,即
true(真)和false(假)。 undefined:表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值。null:表示空值,即此处的值为空。- 对象(object):各种值组成的集合。
1.2 type of 数据类型
typeof可以用来检查一个没有声明的变量,而不报错。
数值、字符串、布尔值分别返回number、string、boolean。对象返回object。
undefined返回undefined。null返回object。
(注:null的类型是object,这是由于历史原因造成的。1995年的 JavaScript 语言第一版,只设计了五种数据类型(对象、整数、浮点数、字符串和布尔值),没考虑null,只把它当作object的一种特殊值。后来null独立出来,作为一种单独的数据类型,为了兼容以前的代码,typeof null返回object就没法改变了。)
2. null,undefined和布尔值
null表示空值,undefined表示未定义的值。
布尔值只有true和false两个值
3. 数值
3.1 概述
JavaScript 内部,所有数字都是以64位浮点数形式储存,即使整数也是如此。所以,1与1.0是相同的,是同一个数。浮点数不是精确的值。
3.2 特殊数值
3.2.1 NaN
NaN不是独立的数据类型,是一个特殊的数值,它的数据类型依然属于Number
NaN是 JavaScript 的特殊值,表示“非数字”(Not a Number),主要出现在将字符串解析成数字出错的场合。
NaN的运算规则:
NaN不等于任何值,包括它本身。
NaN在布尔运算时被当作false。
NaN与任何数(包括它自己)的运算,得到的都是NaN。
3.2.1 Infinity
Infinity表示“无穷”,用来表示两种场景。一种是一个正的数值太大,或一个负的数值太小,无法表示;另一种是非0数值除以0,得到Infinity。
Infinity有正负之分,Infinity表示正的无穷,-Infinity表示负的无穷。
Infinity大于一切数值(除了NaN),-Infinity小于一切数值(除了NaN)。
Infinity的四则运算:
0乘以Infinity,返回NaN;0除以Infinity,返回0;Infinity除以0,返回Infinity。Infinity加上或乘以Infinity,返回的还是Infinity。Infinity减去或除以Infinity,得到NaN。Infinity与null计算时,null会转成0,等同于与0的计算。Infinity与undefined计算,返回的都是NaN。
3.3 与数值相关的全局方法✔
3.3.1 parseInt()
parseInt方法用于将字符串转为整数。
parseInt方法还可以接受第二个参数(2到36之间),表示被解析的值的进制,返回该值对应的十进制数。默认情况下,parseInt的第二个参数为10,即默认是十进制转十进制。
3.3.2 parseFloat()
parseFloat方法用于将一个字符串转为浮点数。
3.3.3 isNaN()
isNaN方法可以用来判断一个值是否为NaN。但是,isNaN只对数值有效,如果传入其他值,会被先转成数值。对于对象,数组和字符串,isNaN返回true。原因:传入字符串的时候,字符串会被先转成NaN,所以最后返回true。但是,对于空数组和只有一个数值成员的数组,isNaN返回false。
3.3.4 isFinite()
isFinite方法返回一个布尔值,表示某个值是否为正常的数值。
4 字符串
4.1 概述
字符串就是零个或多个排在一起的字符,放在单引号或双引号之中。 如果要在单引号字符串的内部,使用单引号,就必须在内部的单引号前面加上反斜杠,用来转义。双引号字符串内部使用双引号,也是如此。例如:
'Did she say /'Hello'/?'
// "Did she say 'Hello'?"
"Did she say /"Hello"/?"
// "Did she say "Hello"?"
4.2 转义符
常用的转义符主要有一下这些:
\0:null\b:后退键\f:换页符\n:换行符\r:回车键\t:制表符\v:垂直制表符':单引号":双引号\:反斜杠