js基础知识笔记一
参考笔记网站:https://www.cnblogs.com/yuanziwen/p/8531498.html
1,JavaScript的数据类型都有什么?
基本数据类型:String,Boolean,Number,Undefined, Null (symbol不常用)
引用数据类型:Object(Array,Date,RegExp,Function)
2,判断数据类型?
四种:typeof instanceof constructor toString
总结:至于在项目中使用哪个判断,还是要看使用场景,具体的选择,
一般基本的类型可以选择typeof,引用类型可以使用instanceof
判断某变量是否为数组数据类型?
* 方法一.判断其是否具有“数组性质”,如slice()方法。可自己给该变量定义slice方法,故有时会失效
* 方法二.obj instanceof Array 在某些IE版本中不正确
* 方法三.方法一二皆有漏洞,在ECMA Script5中定义了新方法Array.isArray(), 保证其兼容性,最好的方法如下:
`if(typeof Array.isArray==="undefined")
{
Array.isArray = function(arg){
return Object.prototype.toString.call(arg)==="[object Array]"
};
}`
3,运算符的优先级

4,希望获取到页面中所有的checkbox怎么做?(不使用第三方框架)
`var domList = document.getElementsByTagName(‘input’)
var checkBoxList = [];
var len = domList.length; //缓存到局部变量
while (len--) { //使用while的效率会比for循环更高
if (domList[len].type == ‘checkbox’) {
checkBoxList.push(domList[len]);
}
}`
5,流程语句的格式
第一种if else结构
`if (*condition*){
当条件为 true 时执行的代码*
}
else{
当条件不为 true 时执行的代码*
}`
第二种if else if
`if (*condition*){
当条件为 true 时执行的代码*
}
else if{
判断第二个是否为true*
}`
第三种switch case(一般用于有定值得情况下使用)
`switch(n)
{
case 1:
执行代码块 1
break;
case 2:
执行代码块 2
break;
default:
与 case 1 和 case 2 不同时执行的代码
}`
6,循环格式
第一种 for循环
`for (语句 1; 语句 2; 语句 3) {
要执行的代码块
}
语句 1 在循环(代码块)开始之前执行。
语句 2 定义运行循环(代码块)的条件。
语句 3 会在循环(代码块)每次被执行后执行。
常写的就是for(var i = 0; i<arr.length; i++){} `
第二种 while 与 do while循环
`while (条件) {
要执行的代码块
}`
`do {
要执行的代码块
}while (条件);`
7,关键字
break只能跳出最内层的循环
continue语句用在循环结构内,用于跳出本次循环中剩余的代码,并在表达式的值为真的时候,继续执行下一次循环。
if和while的区别

8,创建数组的三种方法
1,构造函数方式
`var myCars=new Array();
myCars[0]="奥迪";
myCars[1]="宝马";
myCars[2]="奔驰";`
2,简洁方式(注意:空数组的长度 var myCars=new Array(3);如果是数字是数组的长度,如果是非数字那么则是一个一个元素。)
`var myCars=new Array("沃尔沃","保时捷","奥拓");`
3,字面量创建(实际企业开发中使用居多)
`var myCars=["凯迪拉克","宝骏","QQ"];
var myCars=[];空数组`
9,数组的原生demo
1,去掉数组中元素的值是0的,重新生成一个新数组
`var arr5 = [5,0,4,2,0,8,0,9];
var newArr = [];
for (var i = 0; i < arr5.length; i++) {
if(arr5[i] != 0){
//插入新数组
newArr[newArr.length] =arr5[i];
}
}
console.log(newArr);`
2,在原数组上进行翻转(顶针写法)
`var arr = [1,2,3,4,5,6];
// i 0 4
// i 1 3
// i 2 2
console.log(arr);
for(var i = 0; i < arr.length/2; i++){
var temp = arr[i];
arr[i] = arr[arr.length - 1 - i];
arr[arr.length - 1 - i] = temp;+
}
console.log(arr);`
3,数组去重(非常重要)
`var arr = [1,2,3,4,1,1,2,1,3,2,4]; //去重完成 [1,2,3,4]
//数组去重都是在新数组当中去重的;
var newArr = [];
var flag = true;
for(var i = 0; i < arr.length; i++){
//从arr数组当中拿数
for(var j = 0; j < newArr.length; j++){
//拿新的数组当中的值和老数组拿的值进行比较
//而且从原数组当中拿的值,必须和新数组当中所有的值比较完成,才知道有没有
if(arr[i] == newArr[j]){
//代表着新数组内部有这个值;
flag = false;
break;
}
}
//break出来的,代表新数组当中有这个值
if(flag){
newArr[newArr.length] = arr[i];
}
flag = true;//重置标志位
}
console.log(newArr);`
4,冒泡排序
` <script>
var arr = [6,5,3,1,2,4];
for (var i = 0; i < arr.length-1; i++) {
for(var j = 0;j<arr.length-1-i;j++){
if(arr[j] > arr[j+1]){
//交换
var temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
console.log(arr);
</script>`
10,数组的方法篇(很重要,简单实用)
`var arr = [1,2,3,4];
//数组增删改查
//从末尾增
var result = arr.push(100,200,300,[1,2,3]);
console.log(result);
console.log(arr);
//功能:从数组的末尾增加一个或者多个
//参数:增加的元素
//返回值:返回加入元素后数组的新长度
//这个方法对原数组有影响
//从末尾去删
var result = arr.pop();
console.log(result);
console.log(arr);
//功能:从数组的末尾删除一个
//参数:无
//返回值:返回删除的那一个元素
//这个方法对原数组有影响
//从头部增
var result = arr.unshift(100,200,300,[1,2,3]);
console.log(result);
console.log(arr);
//功能:从数组的头部增加一个或者多个
//参数:增加的元素
//返回值:返回加入元素后数组的新长度
//这个方法对原数组有影响
//从头部去删
var result = arr.shift();
console.log(result);
console.log(arr);
//功能:从数组的头部删除一个
//参数:无
//返回值:返回删除的那一个元素
//这个方法对原数组有影响
//增删改一体化
//这个方法根据参数的不同,有不同的功能
//这个方法我们大家先当作删除去理解
//删除
var result = arr.splice(1,2);
console.log(result);
console.log(arr);
//功能:从数组的任意位置删除任意个元素
//参数:两个 第一个代表从哪开始,第二个代表删除几个
//返回值:返回删除的元素组成的新数组
//这个方法对原数组有影响
//增加
var result = arr.splice(2,0,400,500,600);
console.log(result);
console.log(arr);
//功能:从数组的任意位置怎加任意多个元素
//参数:多个 第一个代表从哪开始,第二个代表删除0个,后面的代表新增的元素
//返回值:返回删除的元素组成的新数组,最终是空数组
//这个方法对原数组有影响
//修改
var result = arr.splice(1,1,1000,2000);
console.log(result);
console.log(arr);
//功能:修改数组当中任意的元素
//参数:多个 第一个代表从哪开始,第二个代表删除几个,后面的代表新增的元素
//返回值:返回删除的元素组成的新数组
//这个方法对原数组有影响
//把数组再转化为字符串 和字符串方法 split是一个逆运算
var result = arr.join('');
//功能:以指定的字符串为连接符,讲数组元素连接成一个字符串
//参数:如果不传,默认以逗号为连接符,将元素连接成字符串
// 如果传的是正常字符串,那么以这个字符串为连接符将元素连接成字符串
// 如果传的是空串,那么直接将字符串连接成字符串,中间没有任何连接
//返回值:返回连接好的字符串
//这个方法对原数组没有影响
console.log(result);
console.log(arr);
//翻转数组
var result = arr.reverse();
console.log(result);
console.log(arr);
console.log(result == arr);
//功能:翻转数组
//参数:无
//返回值:返回翻转后的原数组
//这个方法影响原数组
//concat
var result = arr.concat([100,200,300]);
console.log(result);
console.log(arr);
console.log(arr === result);
//功能:在数组的末尾拼接元素
//参数:可以不写,相当于复制一个数组
// 也可以写一个或者多个值,会把这些值拼接到数组末尾
// 也可以写数组,会先把数组拆开,把元素拼接到数组末尾
//返回值:返回拼接好的新数组
//这个方法对原数组没有影响
//slice
var result = arr.slice(1,3);
console.log(result);
console.log(arr);
//功能:在数组当中截取部分元素形成新数组
//参数:和字符串方法slice一致;起始位置和结束位置,不包含结束位置的元素
// 如果只传一个代表起始位置,一直到结束。两个位置都可以使用负数
//返回值:返回截取的元素形成的新数组
//这个方法对原数组没有影响
//可以看也可以不看
arr = [18,2,10,9,88,66,22];
var result = arr.sort(function(a,b){
return b - a;
});
console.log(result);
console.log(arr);
console.log(result === arr);
//功能:对数组进行排序
//参数:如果不写,默认把每个元素转化为字符串进行排序(按照Unicode码)
// 如果要按照升序降序去排,需要传一个参数是函数
// 这个函数有两个形参
//返回值:排好序的原数组
//这个方法对原数组有影响
//valueOf 是Object的原型当中的
var result = arr.valueOf()
console.log(result);
console.log(arr);
console.log(result === arr);
//功能:获取数组对象的基本值
//参数:无
//返回值:返回原数组,因为数组是非包装对象,所以它是没有基本值
//toString
var result = arr.toString()
console.log(result);
console.log(arr);
//功能:将数组对象转化为字符串
//参数:无
//返回值:把数组的中括号去掉,其余加引号形成字符串返回`
数组方法参照网站:https://www.cnblogs.com/MythLeige/p/7047273.html
数组去重方法网站:https://www.cnblogs.com/echoyya/p/14555831.html

浙公网安备 33010602011771号