知识点
- 注释:
//单行注释
/*
多行注释
*/
数据类型
在CS(Computer Science)中,数据便是一切。JavaScript总共支持7中数据类型。
undefined
:未定义;
null
:空对象;
boolean
:布尔型;
number
:数值型;
string
:字符型;
symbol
:符号;
object
:对象。变量
允许计算机以一种动态型式来存储和操作数据;通过操作指向数据的指针,而非数据本身来避免内存泄漏。
JavaScript通过关键字var
来声明变量,变量名由字符、数字、下划线_
或美元符$
组成,推荐使用驼峰命名法:第一个单词首字母小写,以后每个单词首字母大写。变量初始化
通常在Initialize变量时,为变量赋予一个初始值,可以避免不必要的错误(在分配存储空间时,变量所得到的空间中可能之前废弃的垃圾值)。-
数值运算
支持+
、-
、*
、/
四则运算,%
取余运算:在数学中通过对2取余判断一个数的奇偶。
++
:自增运算,i++ <=> i = i + 1
;
--
:自减运算,i-- <=> i = i - 1;
=:赋值运算,将
=`右边的值赋予等号左边的变量。赋值运算符的优先级低于算数运算。+=
、-=
、*=
、/=
复合运算符:
myVar = myVar + 5 <=> myVar += 5
;
myVar = myVar - 5 <=> myVar -= 5
;
myVar = myVar * 5 <=> myVar *= 5
;
myVar = myVar / 5 <=> myVar /= 5
字符串
字符串是用单引号或者双引号包裹起来一连串的零个或多个字符。
需要在字符串中使用''
或者""
时,使用反斜杠加上引号\'
或者\"
可以使引号变为字符串中的字符(转义)。
常见转义字符:
\'
:单引号;
\"
:双引号;
\n
:换行符;
\r
:回车符;
\t
:制表符;
\b
:退格;
\f
:换页符
\\:反斜杠。
字符串的
+
运算:
连接+
操作符左右的两个字符串,但是两个字符串之间的空格需要自己处理(在字符串中加空格);
+
操作符一侧操作数为数值型,另一侧为字符串,所得到结果为字符串,自动将数字转换为对应的字符。字符串的
+=
操作符:
原理与数值型相同,同理需要注意空格。格式化处理字符串:
使用+
连接字符串与字符串变量。
var str = "Kyxy Tracy"
var myStr = "Hello " + str + ", is there something wrong with you?"
- 字符串的方法:
.length
:返回字符串的长度(字符串中字符的个数);
JavaScript中只有字符串类型,没有单独的字符型。通过字符串的索引来访问单个字符:myStr[index]
(索引从0开始计数)。
字符串的最后一个字符:myStr[myStr.length-1]
;
字符串的倒数第n个字符:myStr[myStr.length-n]
;
字符串是不可变对象(immutable),一旦被创建不能被修改:字符串被赋值给变量后,存储空间中字符串的内容便不能被修改,但是可以重新为该变量赋值。(不可变的字符串的内容,字符串字面量String Literal)
- 数组Array
数组可以连续地在一处存储多个数据。
定义一个数组:
var myArr = ["haha", 1, "xixi", 2, true]; //数组中可以存放不同数据类型的数据
数组的索引类似于字符串的索引,从0开始,访问方式相同。
数组中的内容可以随意改变,通过
myStr[n] = "wowo";
为数组相应位置上元素赋值即可改变数组的内容。
数组可以相互嵌套。数组的方法:
.push(parameter1, parameter2...)
:将括号中的参数一次添加到数组的末尾;
.pop()
:删除数组最后一个元素,并返回其值;
.shift()
:删除数组的第一个元素,并返回其值;
.unshift(parameter1, parameter2... )
:将括号中的参数一次添加到数组的首部;
var myArr = [1, 2, 3, 4];
myArr.push(5, 6); //myArr变为[1, 2, 3, 4, 5, 6]
myArr.pop(); //返回6,并且myArr变为[1, 2, 3, 4, 5]
myArr.shift(); //返回1,并且myArr变为[2, 3, 4, 5]
myArr.unshift("a", false); myArr变为["a", false, 2, 3, 4, 5]
- 函数Function:代码的重用
定义:
function myFunction(parameter1, parameter2...) {
console.log("Hello world!"); //myFunction是函数名,parameter是形参
}
使用myFunction(parameter1, parameter2...)
来调用函数。定义函数时,parameter是形参,充当占位符。在调用函数时,传入的参数为实参。
- 变量的作用域
作用域是变量作用的范围,函数内部声明以及函数的参数均是局部变量;
没有使用var
关键字声明的变量(会被自动创建全局作用域),以及在函数外定义的变量是全局变量;全局变量可以在代码的任何地方被使用。建议声明变量时均使用var
关键字。 - 在同一程序中,名称相同的全局变量与局部变量,局部变量拥有更高的优先级。
- 使用参数向函数中传入数据,使用
return
语句可以从函数中返回值,所以可以将函数的调用赋值给变量。
队列queue
queue
是计算机科学中一种抽象的数据结构,队列中的条目都有秩序,新的条目被添加到队列的末端,旧的条目从队列的头部移出。
使用JavaScript实现队列:(数组是有秩序的)
function queue(myArray, item) { //myArray是一个数组,item是数组的一个元素
myArray.push(item); //将item添加到数组的尾部
return myArray.shift(); //将myArray的头部第一个元素,并且返回其值
}
testArr = [1, 2, 3, 4];
queue(testArr, 5); //返回值为1,testArr变为[2, 3, 4, 5]
- 布尔型
boolean
:
布尔型只有两个值,true
和false
。
if语句
if
语句表明分支结构,当条件表达式成立时执行if
语句内的程序块。
if(statement) { //当条件表达式为真时,执行code block;
code block; //代码块
}
- 条件表达式
在JavaScript
中,条件表达式由比较操作符和操作符两边的操作数构成。 -
==
相等操作符:比较两边操作数,先转换为相同的数据类型,再比较是否相等;
{
1 == 1; //true
1 == "1"; //true
1 == 2; //false
"3" == 3; //true
}
-
===
全等操作符: