JavaScript基本知识点整理
一、基本语法
包括标识符、变量的声明与赋值,数据类型、表达式以及运算符的使用。
以及如何使用流程控制语句实现条件判断和代码的重复执行。
1.标识符
- 由大小写字母、数字、下划线和美元符号($)组成,如str、arr3、get_name。
- 不能以数字开头。
- 严格区分大小写,如it与IT表示两个不同的标识符。
- 不能使用JavaScript关键字作为变量名。
- 要尽量做到‘见其名知其义’,如name表示名称。
2.变量的使用和赋值
- 变量的声明代码演示
var sales;
var hits,hot,NEWS;
利用var声明,但未赋初值的变量,默认值会被设为定位undefined。
- 变量的赋值代码演示
var unit, room;
unit = 3;
room = 1001;
var fname = ‘Tom’,age = 12;
省略声明变量的var关键字
flag = false;
a = 1, b = 2;
3.数据类型
(1).分类
- 布尔型Boolean
var flag1 = true;
var flag2 = false;
- 数值型Number
var oct = 032; //八进制数表示的26
var dec = 26; //十进制数的26
var hex = 0xla; //十六进制数表示的26
var fnum1=7.26; //标准格式
var fnum2 = -6.24; //标准格式
var fnum3 = 3.14E6; // 科学计数法格式3.1410^6
var fnum3 = 8.96E-3; // 科学计数法格式8.9610^-3
- 字符型String
var slogan = ‘Knowledge’;//单引号、存放一个单词
var str = ‘the sky is blue.’;//双引号存放一个句子
var color = ’ “red"blue’; //单引号中包含双引号
var food = " 'pizza’bread”; //双引号中包含单引号
var num = ’ ', total = " "; //定义空字符串
- 空型Null
只有一个特殊的null值,用来表示一个不存在或无效的对象或地址。
(2)数据类型准换
- 转布尔型
var con = prompt();
if (Boolean(con)){
document.write('已输入内容‘);
}else{
document.write('无输入内容’);
}
console.log(Boolean(con));
console.log(Boolean(con));
console.log(Boolean(con));
通过Boolean()函数可以对用户输入的内容进行布尔型内容转换,当用户单机“取消按钮”或用户输入任何字符就单击“确定”按钮时,就会被转为false,当有内容时就会被转为false。
- 转数值型
var num1 = prompt('请输入求和的第一个数据‘);
var num2 = prompt('请输入求和的第二个数据’);
console.log(num1+num2);
console.log(parseInt(num1)+parseInt(num2));
- 转字符型
var num1 = num2 = num3 = num4 , num4 = 26;
console.log(String(12));
console.log(num1 + num2 + num3.toString());
console.log(num4.toString(2));
二、流程控制
1.选择结构
- if双分支语句
if(判断条件){
代码段1;
}else{
代码段2
};
- if多分支语句
if(判断条件){
代码段1
}else if{
代码段2
}else if{
……
- switch语句
switch(表达式){
case 值1:代码段1;break;
case 值2:代码段2; break;
……
default:代码段n;
2.循环结构
- while循环语句
while(循环条件){
循环体
……
}
- do…while循环语句
do{
循环体;
……
}while(循环条件);
- for循环语句
for( ; ; ?{
代码段;
}
3.跳转语句
跳转语句用于实现程序过程中的流程跳转。常用的跳转语句有break和continue语句
break语句可应用在switch和循环语句中,其作用是中止当前语句的执行,跳出switch选择结构或循环语句,执行后面的代码。
而continue语句用于结束本次的循环的执行,开始下一轮的执行操作。
三、数组
1.定义:
数组是存储一系列值得变量的集合,它是由一个或多个数组元素组成的,各元素之间使用逗号“,”分隔。
可划分为一维数组、二维数组、三维数组等多维数组。
2.创建数组
使用Array对象创建数组
var 数组名 = new Array(数组元素);//一维
var 数组名 = new Array(new Array(),new Array());//二维
使用“[]"创建数组
var 数组名= [数组元素];//一维
var 数组名=[ [ 数组元素], [数组元素 ] ];//二维
3.获取数组长度
代码演示
var arr1 = [78,88,98];
var arr2 = [‘a’,,,,‘b’,‘c’];
console.log(arr1.length);
console.log(arr.length);
数组的length属性不仅可以用于获取数组长度,还可以修改数组的长度
var arr1= [];
arr.length = 5;
console.log(arr1); //输出结果:5 [empty*5]
var arr2=[1,2,3];
arr2,length = 4;
console.log(arr2); //输出结果:4 [1,2,3,empty]
var arr3=[‘a’,‘b’];
arr.length=2;
cosole.log(arr3); //输出结果:2 [“a”,“b”]
var arr4=[‘he’,‘xi’,‘gu’,‘jiu’];
arr.length=3;
console.log(arr4); //输出结果:3 [“he”,“xi”,“gu”]
4.数组的访问与遍历
- 访问数组元素
var arr = [‘hello’,‘JavaScript’,22.48,true];
console.log(arr[0]);
console.log(arr[2]);
console.log(arr);
- 数组的遍历
for(variable in object){……} //数组下标遍历
of 时是数组的元素遍历
5.元素的添加与修改
- 添加
var height=[];
height [5] = 183;
height [3]=123;
console.log(height);
- 修改
var arr =[‘s’,‘d’,‘w’];
arr[2]=123;
console.log(arr);
- 删除
var stu = [‘Tom’,‘jimmy’,‘lucy’];
console.log(stu);
delete stu[1];
console.log(stu);
6.二维数组的转置
var arr =[ [‘a’,‘b’,‘c’],[‘d’,‘e’,‘f’],[‘g’,‘h’,‘i’],[‘j’,‘k’,‘l’]];
var res =[ ];
for (var i = 0;i<arr[0].length;++j){
res[i] = [];
for(var j = 0;j<arr.length;++j){
res[i][j]=arr[j][i];
}
}
console.log(‘转置前:’);
console.log(arr);
console.log('转置后:);
console.log(res);
console.groupEnd();
7.数组的常见方法
- 栈和队列方法
方法名称 | 功能描述 |
---|---|
push() | 将一个或多个元素添加到数组的末尾,并返回数组的新长度 |
unshift() | 将一个或多个元素添加到数组的开头,并返回数组的长度 |
pop() | 从数组的末尾移出并返回一个元素,弱势空数组则返回undefined |
shift() | 从数组的开头移出并返回一个元素,弱势空数组则返回undefined |
- 检索方法
方法名称 | 功能描述 |
---|---|
includes() | 用于确定数组中是否含有某个元素,含有则返回true,否则返回false |
– | – |
Array.isArray() | 用于确定传递的值是否是一个Array,是则返回true,不是则返回false |
indexOf() | 返回在数组中可以找到给定制的第1个索引,如果不存在,则返回-1 |
lastindexOf() | 返回指定元素在数组中的最后一份索引,如果不存在则返回-1 |
- 数组转字符串
方法名称 | 功能描述 |
---|---|
join() | 将数组的所有元素连接到一个字符串中 |
toString() | 返回一个字符串,表示指定的数组及其元素 |
- 其他方法
方法名称 | 功能描述 |
---|---|
sort() | 对数组的元素进行排序,并返回数组 |
fill() | 用一个固定值填充数组中指定下标范围内的全部元素 |
reverse() | 颠倒数组中元素的位置 |
splice() | 对一个数组在指定下标内删除或添加元素 |
slice() | 从一个数组的指定下标范围内拷贝数组元素到一个新数组中 |
concat() | 返回一个合并两个或多个数组后的新数组 |
四、函数
1.创建函数
function 函数名([参数1,参数2,……]){
//函数体……
}
2.参数设置
- 无参
function greet() {
console.log('Hello everybody!')
}
- 有参
function maxNum(a,b){
a = parseInt(a);
b = parseInt(b);
return a>=b?a:b;
}
3.函数的调用
函数的调用非常简单。只需要引用函数名,并传入相应的参数即可
4.变量的作用域
变量有全局变量、局部变量、块级变量。
function info(){
var age = 18;
}
console.log(age); //输出结果:Uncaught ReferenceError: age is not defined
从上述代码可以看出,变量需要在她的作用范围内才可以被使用,这个作用范围被称为变量的作用域。
5.匿名函数
指没有函数名称的函数,可以有效地避免全局变量的污染以及函数名城的冲突问题。
//方式1:函数表达式中的省略函数名
var fn=function (num1,num2){
return num1+num2;
}
fn(1,2);
//方式2:自调用方式
(function (num1,num2){
return num1+num2;
})( 2, 3);
//方式3:处理事件
document.body.onclick = function() {
alert ('Hi, everybody!');
};
6.回调函数
是指一个函数A作为参数传递给一个函数B,然后在B的函数图内调用函数A,此时,A就被称为回调函数。
<script>
function cal(num1,num2,fn){
return fn(num1,num2);
}
console.log( cal(45,55,function (a ,b) {
return a+ b ;
}) );
console.log (cal (10, 20 , function (a, b) {
return a *b;
} ));
</script>
回调函数的一些方法
find()、every()、some()、forEach()、map()、reduce()、reduceRight()
7.函数嵌套与递归调用
嵌套函数指的是在一个函数内部存在另一个函数的声明。
递归调用是函数嵌套中调用一种特殊的调用,指的是一个函数在其函数体内调用自身的过程,这种函数成为调用函数。
8.闭包函数
指的是有权访问另一函数作用域内变量(局部变量)的函数。
- 可以在函数外部读取函数内部的变量。
- 可以让变量的指始终保持在内存中。
function fn () {
var times = 0 ;
var c = function () {
return ++times;
};
return c;
}
var count = fn (); //保存fn()返回的函数,此时count就是一个闭包
console.log(count());
console.log(count());