前端基础知识-js碎片知识收集

352 阅读4分钟

背景

基础知识之js碎片知识,给自己一个查询字典。会持续更新...

js引入

  • script标签引入js文件
  • script标签内部的js代码
  • 如果一个script标签引入外部js文件,内部也有js代码会导致内部js代码失效。

js基本语法

  • 1.变量声明 var a; 变量赋值 a = 100;
  • 2.变量命名规则
:①:变量名必须以英文字母、_、'$'开头,②:变量名可以包括英文字母、_、$、数字,③:不可以用系统关键字、保留字作为变量名。
  • 3.值类型:原始类型(栈数据),引用类型(堆数据)。

原始值赋值:

引用类型赋值:

  • 4.字符串比较是比较ASCII码位置常用的A是65,a是97
  • 5.&& 运算符:先看第一表达式转换成布尔值得结果,如果结果为真,只有两个表达式,返回第二个表达式的值,如果第一个表达式为假,返回第一个表达式。(undefined,null,NaN,'',0,false 转换布尔为false,其他的为true。)
  • 6.|| 运算符:第一个表达式为真则返回第一个,第一个为假则返回第二个。
  • 7.for循环另类写法
    1. while循环就是上面的for循环另类写法
    1. switch case语句 如果不加break,有一个case判断成功了,后面的case语句都会运行。

特殊写法:

  • 10.break 跳出循环,continue 终止本次循环开始下次循环。

  • 11.数组splice方法:arr.splice(i,j,k),从第i位开始,切出去j位,再在原位置插入k,返回切的数组

var arr = [1,2,3];
var arr1 = arr.splice(1,1,4,5,6)
console.log(arr)  // [1,4,5,6,3]
console.log(arr1) // [2]
  • 12.数组sort方法:传入两个形参,然后看返回数值,为负则前面的数放在前面,为正则后面的数放在前面,为0不动。
var arr  = [1,5,3,7,10];
 arr.sort((a,b)=>{
  return a-b  // b-a则为降序
})
console.log(arr)  // [1,3,5,7,10] 升序
// 数组乱序可以用sort随机返回正负 
// Math.random() - 0.5 会随机正负
    1. 改变原数组的方法:push(返回数组长度),pop(返回删除的那个item),shift(同pop,但是是删除第一个),unshift(同push,但是从第一位插入),sort,reverse,splice。不改变原数组的方法:concat,join,slice(从该位开始截取,截取到该位)

js类型

typeof 用来返回输入的类型,可能返回的类型有:number,string,boolean,object,undefined,function。

1.显式类型转换

  • Number() 将内容转换为数字。Number(undefined)=>NaN,Number(null)=>0,Number('a')=>NaN
  • parseInt() 一种用处是转换成整型;另一种是把第一个参数看为第二参数的进制,然后转换成10进制返回。例如:parseInt('10',16)=>16;parseInt("100px")=>100。
  • String() 转换成字符串
  • Boolean() 转换成布尔
  • toString() null和undefined不可以用此方法。 10.toString(8) 将10转换成8进制。[].toString ==>"" {}.toString() ==> [object object]
  1. 隐式类型转换
  • isNaN() 把里面的数先进行Number()转化,再看是不是NaN,返回true或false。
  • null == undefined,如果一个是数字,则把另一个转换成数字,进行比较。如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值。如果一个是对象,另一个是数值或字符串,把对象转换成基础类型,调用toString或者valueOf方法(valueOf>toString)。
  • +运算 如果为一元运算则转为数字,如果为二元运算:有一边是字符串的情况下,另一边也转成字符串,没有字符串的情况,两边都转成数字,如果其中一个是对象,对象转换成原始值(日期对象调用toString,其他调用valueOf)。
  • 练习:[] == ![] => [] == false => [] == 0 => 0 == 0 结论true(Number([])=>0)
  • 练习:{} == !{} => {} == false => {} == 0 => NaN == 0 结论false(Number({})=>NaN)

常见js题

答案:'1undefined'。

var a = 1
var b = --a + a--
// 解题思路:++a或者--a是返回运算后的值,a--或者a++是返回运算前的值
// 所以--a返回运算后是0,这时候a也是0,然后a--返回的是0,这时候a已经是-1
// 所以b = 0 + 0 = 0 ,a此时为-1
  1. js中连续调用方法,可以写成一个对象,对象的每个方法return this。
  1. 数组去重的思考
// es6:
// 数组去重,扁平化
var arr = [1, 2, [3, 4, 5, [7, 4]], 6];
var arr1 = [...new Set(arr.flat(Infinity))];
console.log(arr1); // [1,2,3,4,5,7,6]

// 键值对去重 // 数组键值对去重 function unique(arr) { // 方法1:去重计数 // var obj = {}; // for (var i = 0; i < arr.length; i++) { // obj[arr[i]] ? (obj[arr[i]] += 1) : (obj[arr[i]] = 1); // } // return Object.keys(obj); // 这是返回的字符串

// 方法2:去重计数 // var obj = arr.reduce((p, n) => { // console.log(p, n); // p[n] = p[n] + 1 || 1; // return p; // }, {}); // return Object.keys(obj);

// 方法3:去重计数 // var obj = {} // return arr.filter((it) => { // if (obj.hasOwnProperty(typeof it + it)) { // obj[typeof it + it]++; // return true; // } else { // obj[typeof it + it] = 1; // return false; // } // });

// // 仅仅去重 // var obj = {}; // return arr.filter((it) => { // return obj.hasOwnProperty(typeof it + it) // ? false // : (obj[typeof it + it] = true); // }); } console.log(unique([1,2,2,2,2,3]));//[1,2,3]

总结:

由于本人技术能力所限,如果相关错误请及时与我联系修改,谢谢!

本文使用 mdnice 排版