js 不可告人的秘密

1 浮点数
0.3-0.2 == 0.2-0.1 //false
0.6-0.5 ==0.3-0.2 //true
在这里插入图片描述
所以说0.3-0.2 == 0.5-0.4 ==0.6-0.5 ==0.7-0.6
其他的各不相等

2在这里插入图片描述
in 函数为判定索引 或者key值 一般是先隐式转换为 string类型 然后判定
但是 + 会默认将数字变为字符串链接 所以“2”+“1” ==“21”
但是你如果用减法 “2”-“1” ==1
那么1 in data 就会返回 true

3
在这里插入图片描述
变量声明与函数是否执行无关

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里成哥应该是搞错了 && 两个相同的非空值 应该是执行 最后一个表达式

4作用域链
[[scope]] 作用域储存执行期上下文集合
简单点说就是单独提供给内核使用的 一个控制函数的作用范围的指针或者说域
程序员无法调用
子集函数在执行时的作用域会调用父级函数的预编译结果
这就是产生作用域的原理
有点像存钱罐 放进去以后无法拿出来 但是存钱罐可以接收外面的钱

5 闭包
闭包就是当内部函数被保存到外部的时候,造成原作用域不释放,从而引发内存泄漏(内存占用)

 function a(){
    var i = 1;
	function b(){
		i++;
		console.log('这样就是闭包');
		console.log("函数在执行以后 " + i +" 会变成2")
	 }

}
 闭包作用有 1 累加器 封装一个函数来实现累加 由于该函数比较自闭 所以可以用作累加
 	2 缓存 一个函数下的两个的不同函数公用一个AO,因此在增删的时候对该AO操作会保存 ,利用这一点实现累加器
 	3封装 公司开发的时候会产生大量的变量 累加可以防止 变量污染 利用的原理是闭包的私有化

6立即执行函数
这个算是闭包的一个非常常见的方法
(function(形参a,b,c){return 可以在函数执行之后销毁函数,只返回执行结果}(对应的实参))
可以定义一个变量来接收 函数的执行结果。
当该函数被立即执行以后 接收变量不再代表函数 而代表函数的执行结果

  • / - / ! / || function 被忽略的名称(){}();都可以是立即执行函数,但是不推荐这样写
  • 在这里插入图片描述
    当函数执行完毕之后再访问函数返回值,会只有最终的结果
    在这里插入图片描述
    7 关于js对象类型的判定

首先可以使用 typeof 的方法
共有有六种返回值:string;boolean;number;Object,functionl;undefined

其次可以使用 instanceof 的方法
A instanceof B
A的原型链是否有B的构造函数

然后可以使用constructor
直接调用该属性
A.constructor

最后一种 obj.prototype.toString.call()的方法

function TypeOf(obj){
       var type = Object.prototype.toString.call(obj);
       if(type == '[object Array]'){
              return 'Array';
        }else if(type == '[object Object]'){
              return "Object"
        }else{
              return 'param is no object type';
        }
}

8 有关数组

首先可以改变数组本身的方法有
push()在数组的末尾增加一个或多个元素 并返回之后数组的长度
pop()删除并返回数组的最后一位
shift()删除并返回数组的第一位
unshift()在开头添加一个或多个参数,并返回数组的长度
sort(function(a,b){
return a-b;
})正向排序(升序如果return b-a则是降序)
reverse()逆转
splice()三个参数 (从哪儿切,切几个,加什么)这个貌似可以代替前面四个函数,还有多的用途

不改变原数组的方法
concat()连接
toString()转换为数组
join()连接以某某字符串的方式进行连接 成为字符串,当然也可以直接加数字,但是不推荐‘0’以0
为间隔连接,不传“”时按照,进行连接 有空串则按照字符串拼接形式连接
与之相反的有split()方法,按照参数的形式进行拆分,并组成数组

slice()(从哪儿切,切到什么位置)需要接收数据,不然没用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值