js中>=跟==到底是怎么判定的?!wtf

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js中>=跟==到底是怎么判定的?!wtf相关的知识,希望对你有一定的参考价值。

如下:
undefined==null 为true; undefined>=null 为false(why?)
null==0 为false(这个特殊处理可以理解); null>=0为true

undefined 表示一个变量自然的、最原始的状态值,而 null 则表示一个变量被人为的设置为空对象,而不是原始状态。 ECMAScript 规范认为,既然 null 和 undefined 的行为很相似,并且都表示 一个无效的值,那么它们所表示的内容也具有相似性,即有undefined == null;但 === 会返回 false ,因为全等操作 === 在比较相等性的时候,不会主动转换分项的数据类型,而两者又不属于同一种类型,同理,undefined>=null 是false追问

>=用在不同类型间很常见啊,null>=-1 ; \'23\'>=22 都返回true,怎么能同理呢?

参考技术A 平等检查==为undefined和null定义,使得没有任何转换,他们相等,并不等于别的
比较时null/undefined转换为数字:null变为0,undefined变为NaN
平等检查(==)和比较(> < >= <=)的工作方式不同。比较:转换null为数字,因此将其视为0。这就是为什么null >= 0是真的追问

那按这个理解 '2'==2不是应该等于false吗?但是为true,说明字符串2是先转换成数值才比较相等的吧,也就说明平等检查不也得转换吗(不是你说的没有任何转换)?那既然>=跟==工作的时候都存在转换,结果怎么不一样?

追答

当比较值属于不同类型时,它们将转换为数字
但是null和undefined 属于一个例外

js window.scroll 怎么判断滚动到底部

若要想判断js window.scroll是否滚动到底部,需要用的三个属性值,它们分别是:

scrollTop、clientHeight和scrollHeight;

1、scrollTop为滚动条在Y轴上的滚动距离。

2、clientHeight为内容可视区域的高度。

3、scrollHeight为内容可视区域的高度加上溢出(滚动)的距离。

so,滚动条到底部的条件即为scrollTop + clientHeight == scrollHeight。

参考技术A js判断window.scroll 判断滚动到底部的方法是设置一个变量,来检测鼠标位置。
具体的实现方法如下:
$(window).scroll(function()
如果滚动的高度加上窗口的高度等于页面的高度就是到了底部
if($(window).scrollTop() + $(window).height() == $(document).height())
alert("bottom!"); //已经滚动到底部

);

或者也可以写专用方法检测高度:
function getDocHeight()
var D = document;
return Math.max(
D.body.scrollHeight, D.documentElement.scrollHeight,
D.body.offsetHeight, D.documentElement.offsetHeight,
D.body.clientHeight, D.documentElement.clientHeight
);


然后再用以下方法检测:
$(window).scroll(function()
if($(window).scrollTop() + $(window).height() == getDocHeight())
alert("bottom!");

);
参考技术B 判断scrollHeight(这个是滚动条的长度) 加上 scrollTop(这个是滚动条举例顶部的高度)是否等于document.clientHeight(这个是文档的高度)即可。本回答被提问者采纳

以上是关于js中>=跟==到底是怎么判定的?!wtf的主要内容,如果未能解决你的问题,请参考以下文章

关于H5判定区域里面滑动到底部,加载更多的总结

WTF小程序之wxs

javaweb中如何实时判定验证码的正误

c语言中内循环次数怎么判定

到底什么是promise?有什么用promise怎么用

python 爬虫服务器怎么判定是程序