javascript
爱吃胡萝卜的兔子-T
这个作者很懒,什么都没留下…
展开
-
为什么NaN不等于NaN
typeof NaN 返回结果为number,NaN的类型为number,所有当NaN == NaN返回false时会给人留下很多疑惑。NaN是Not a Number,不是一个数值的缩写。一些数学运算会产生不可表达的值,即NaN。NaN更多的是表示不是一个数值的状态,而不是一个数值的状态有很多种情况。如果A为NaN,B为NaN,也就是说A不是一个数值,B也不是一个数值。比如‘abc’,‘efg’都不为一个数值,你能说它们相等吗?当然不能。这样来理解NaN == NaN返回false,就更容易理解.原创 2021-09-28 10:49:42 · 955 阅读 · 0 评论 -
preventExtention、freeze、seal及isExtensible、isFrozen 、isSealed比较
Object.preventExtention 使对象不可扩展,不可添加属性但可删除属性,属性可写、可配置。除不能再添加属性,也就是不可扩展,可进行属性的其它操作。Object.freeze 不可添加删除属性,属性不可写、不可配置。不能再对属性进行任何操作。Object.seal 不可添加删除属性,属性可写、不可配置。除了能进行修改属性值以外,不能对属性进行其它任何操作Object.isExtensible 判断对象是否可扩展。preventExtention、freeze、seal的对象都..原创 2021-09-10 11:27:58 · 208 阅读 · 0 评论 -
Javasript相等(==)与严格相等(===)操作符
一、相等操作符操作符的两边都是对象,只有当两个操作数为同一对象的引用时才返回true。 当两个操作数为null或者undefined时,null == null 、undefined == undefined 、null == undifined都返回true,null、undefined与其它类型比较都返回false。 当数字、字符串、布尔值两种不同类型进行比较时,字符串、布尔值都会被转换成数字然后进行比较;true会被转换成1,false会被转换成0。 当操作数之一是对象,另一为数字、字符串、原创 2021-08-31 11:22:08 · 105 阅读 · 0 评论 -
同源策略与跨域
同源策略同源策略是指浏览器为了完全考虑,只允许与本域下的接口进行交互,不同源的客户端脚本在没有明确授权的情况下,不能读写对方的资源。同源同协议、同域名、同端口跨域的方式 使用jsonp(仅支持get方法,具有局限性,不安全可能遭受XSS攻击)。 CORS(跨域资源共享),服务器返回结果中加入一个响应头:Access-Control-Allow-Origin。 降域(需要主域名一致)。 postMessage(页面与新打开的窗口消息传递、多窗口消息传递、页面原创 2021-05-07 11:52:56 · 59 阅读 · 0 评论 -
javascript call apply bind区别
call apply bind都是用于改变函数运行上下文对象this的指向。1、fn.call(obj1,var1,var2)改变this的指向为obj1,传入参数var1、var2,参数以逗号分隔2、fn.call(obj1,[var1,var2]) 改变this的指向为obj1,传入参数[var1,var2],参数为数组3、fn.bind(obj1,var1,var2) ()改变this的指向为obj1,并返回函数fn的拷贝,传入参数var1、var2,参数以逗号分隔...原创 2021-04-29 14:38:58 · 66 阅读 · 0 评论 -
javascript变量提升
Javascript的工作原理是先编译后执行,在编译过程中,解释器会把所有声明“移动”到所有作用域的最上面,而赋值和其它逻辑保留在原地,这就叫变量提升。在提升过程中,函数声明会优先被提升,且函数体也被提升。存在相同的变量声明和函数声明,变量声明将会被忽略。相同的函数声明,后面的会覆盖前面的。1、变量声明提升到所在作用域的最上面console.log(a)//undefinedvar a =100console.log(a)//100function test(){ console.l原创 2021-04-29 14:29:33 · 61 阅读 · 0 评论