本文总结了学习js必须掌握的知识点,个人总结、不喜勿喷 づ♡ど
一、变量
变量命名规则、如何声明变量(let)
命名方法:小驼峰式命名法
如何声明:
let a = 1
二、数据
数据类型有几类、引用和基础的区别、了解(类型之间的转换)
有两类:基本数据类型、引用数据类型
两者的区别:
1.存储上的区别:
(1)基本数据类型是存放在栈中的简单数据段
(2)引用数据类型是存放在堆内存中的对象,在栈内存中存放的是堆内存中的具体内容的引用地址,通过这个地址可以快速查找到对象0
2.比较上的区别:
(1)基本数据类型的比较是值的比较为true
(2)引用数据类型的比较是引用的比较为false
因为引用类型比较的是地址,也就是比较两个对象保存在栈区的指向堆内存的地址是否相同,虽然看起来一样,但是它们指向堆内存的地址是不一样的,所以两个对象不相等
3.赋值上的区别:
(1)基本数据类型的赋值是简单赋值,如果一个变量向另一个变量赋值基本类型的值,会在变量对象上创建一个新值,然后把这个值复制到为新变量分配的位置上
(2)引用类型的赋值是对象引用
三、数组
数组——增、删、查、循环(forEach、map、filter)、排序
增:
unshift:头部添加
Push:尾部添加
删:
shift:头部删除
pop:尾部删除
查:
indexOf查询、lastIndexOf查询、find查询、findIndex()查询
循环:
for循环、foreach循环、map循环、filter方法
排序:冒泡排序、sort排序
四、函数
函数:定义,调用,传参,箭头函数、闭包
定义:JavaScript 使用关键字function定义函数。
函数的调用方法:
1.一般形式调用
function fn(x) { //定义函数 return x+1; //返回值 } console.log(f(1)); //返回2
2.作为对象的方法调用
var obj = { value : 0, increment : function (inc) { this.value += typeof inc === 'number' ? inc :1; } } obj.increment(); console.log(obj.value); //1 obj.increment(2); console.log(obj.value); //2
3.使用call和apply动态调用
function f(x,y) { //定义求和函数 return x + y; } console.log(f.call (null, 3, 4)); //返回7
4.new命令间接调用
function (x,y) { //定义函数 console.log("x =" + x + ", y =" + y); } new f(3,4);
函数的参数传递:
值传递即把基本数据类型的值复制给函数形参,函数内对这种类型参数的修改不会影响传入的值。
例如:
var a = 123; function fn(b) { b = 234; console.log(b); // 234 } fn(a); console.log(a); // 123
箭头函数
基本用法:
var f = v => v; //等价于 var f = function(a){ return a; } f(1); //1
箭头函数和普通函数的区别
箭头函数相当于匿名函数,并且简化了函数定义。箭头函数有两种格式,一种只包含一个表达式,连{ ... }和return都省略掉了。还有一种可以包含多条语句,这时候就不能省略{ ... }和return。
箭头函数是匿名函数,不能作为构造函数,不能使用new
箭头函数不绑定arguments,取而代之用rest参数...解决
箭头函数不绑定this,会捕获其所在的上下文的this值,作为自己的this值
箭头函数通过 call() 或 apply() 方法调用一个函数时,只传入了一个参数,对 this 并没有影响。
箭头函数没有原型属性
箭头函数不能当做Generator函数,不能使用yield关键字
闭包
代码示例:
var add = (function () { var counter = 0; return function () {return counter += 1;} })(); add(); add(); add(); // 计数器为 3
原理:
变量 add 指定了函数自我调用的返回字值。
自我调用函数只执行一次。设置计数器为 0。并返回函数表达式。
add变量可以作为一个函数使用。非常棒的部分是它可以访问函数上一层作用域的计数器。
这个叫作 JavaScript 闭包。它使得函数拥有私有变量变成可能。
计数器受匿名函数的作用域保护,只能通过 add 方法修改。
五、数字
parseFloat
parseFloat() 函数可解析一个字符串,并返回一个浮点数。
该函数指定字符串中的首个字符是否是数字。如果是,则对字符串进行解析,直到到达数字的末端为止,然后以数字返回该数字,而不是作为字符串。
语法
parseFloat(string)
parselnt
parseInt() 函数可解析一个字符串,并返回一个整数。
当参数 radix 的值为 0,或没有设置该参数时,parseInt() 会根据 string 来判断数字的基数。
当忽略参数 radix , JavaScript 默认数字的基数如下:
- 如果 string 以 "0x" 开头,parseInt() 会把 string 的其余部分解析为十六进制的整数。
- 如果 string 以 0 开头,那么 ECMAScript v3 允许 parseInt() 的一个实现把其后的字符解析为八进制或十六进制的数字。
- 如果 string 以 1 ~ 9 的数字开头,parseInt() 将把它解析为十进制的整数。
语法:
parseInt(string, radix)
isNaN
isNaN() 函数用于检查其参数是否是非数字值。
如果参数值为 NaN 或字符串、对象、undefined等非数字值则返回 true, 否则返回 false。
语法:
isNaN(value)
toFixed
toFixed() 方法将一个浮点数转换为指定小数位数的字符串表示,如果小数位数高于数字,则使用 0 来填充。
toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。
注意:toFixed() 方法在进行四舍五入时可能会产生一些不准确的结果,这是因为 toFixed() 方法在处理浮点数时,实际上使用的是舍入到最近的偶数(银行家舍入)策略,而不是标准的四舍五入。这种舍入策略是为了在大量运算时减小累积误差。
实例:
var num = 5.56789; var n=num.toFixed(2); //n的输出结果:5.57
个人总结,供个人使用 o(*≧▽≦)ツ┏━┓