JS运算符 — 位运算符

上传人:碎****木 文档编号:220862334 上传时间:2021-12-09 格式:DOCX 页数:4 大小:83.39KB
返回 下载 相关 举报
JS运算符 — 位运算符_第1页
第1页 / 共4页
JS运算符 — 位运算符_第2页
第2页 / 共4页
JS运算符 — 位运算符_第3页
第3页 / 共4页
亲,该文档总共4页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《JS运算符 — 位运算符》由会员分享,可在线阅读,更多相关《JS运算符 — 位运算符(4页珍藏版)》请在金锄头文库上搜索。

1、JS 运算符 位运算符一. 按位与运算符&/ 运算数均为整型/ 运算数可以被转换为整型alert(9 & ”9”); / 9alert(9 & ”10”); / 8alert(1.25 & 3.25); / 1/ 一个或两个运算数均无法被转换整型alert(Infinity & Infinity); / 0alert(NaN & Infinity); / 0 alert(null & null); / 0 alert(undefined & undefined); / 0alert(null & undefined); / 01. 该运算符对它的运算数逐位执行布尔 AND 操作,只有两个运算数

2、中相应的位都为 1 时,结果中的这一位才为 1,它要求其运算数为整型,假设运算数不是整型,那么会尝试将其转换为 32 位整型,假设无法转换,就返回 NaN。alert(9&9); / 9alert(9&10); / 8alert(1&3); / 1alert(1 & ”a”);/0alert( & /d/);/0alert(NaN & NaN);/0二. 按位或运算符|/ 运算数均为整型1. 该运算符对它的运算数逐位执行布尔 OR 操作,假设其中一个运算数中相应位为 1 或者两个运算数中的相应位都为 1,结果中的这一位就为 1,它要求其运算数为整型,假设运算数不是整型,那么会尝试将其转换为 3

3、2 位整型,假设无法转换,就返回 NaN。alert(9|9); / 9alert(9|10); / 11alert(1|3); / 3alert(1 | ”a”);/1alert(10 | null);/10alert(100 | NaN);/100/ 运算数可以被转换为整型alert(9 | ”9”); / 9alert(9 | ”10”); / 11alert(1.25 | 3.25); / 3/ 一个运算数无法被转换整型/ 两个运算数均无法被转换成整型alert( | /d/); / 0 alert(NaN | NaN); / 0alert(Infinity | Infinity);

4、/ 0 alert(NaN | Infinity); / 0 alert(null | null); / 0 alert(undefined | undefined); / 0alert(null | undefined); / 0三. 按位非运算符alert(5); / 相当于-5 - 1 = -6alert(); / -1alert(); / -1alert(undefined); / -1alert(Infinity); / -1alert(NaN); / -1alert(null); / -1 alert(function() ); / -11. 该运算符的作用,相当于转变运算数的符号

5、并减 1。它要求其运算数为整型,假设运算数不是整型, 那么会尝试将其转换为 32 位整型,假设无法转换,就返回 NaN。alert(10);/-11alert(”10”);/-11alert(”aa”);/-1alert(/d/);/-1/ 网上有个老外对的运算原理做了分析,他的分析如下以foo 为例,foo 是经过整型转换后的结果:2. 的运算原理typeof foo = ”number” & !isNaN(foo) & foo != Infinity? foo 0 ? Math.floor(foo) : Math.ceil(foo) : 0;/ 基于老外的分析,的运算原理可以想象为这样:t

6、ypeof foo = ”number” & !isNaN(foo) & foo !=Infinity ? foo 0 ? -(Math.floor(foo) + 1) : -(Math.ceil(foo) + 1) : -1;alert(function()alert(20);(); / 先输出 20,然后输出-1,why?/ 分析:(1) “()“的优先级要高于“,所以 function()alert(20);会先与()结合,再与结合;(2) 会执行其后的语句,但执行结果不会成为运算数,即function()alert(20);()不会成为20;(3) 还会对其后的语句进展求值运算,我们通

7、过模拟来验证一下: var func = function() alert(1);func.valueOf = function() return 10; alert(function() alert(1);); / -1alert(func); / -113. 一个较特别的例子四. 左移运算符/ 运算数均为整数alert(1 2); / 4/ 运算数可以被转换为整数alert(1 “2“); / 41. 该运算符有两个运算数:ab,将 a 左移b 位相当于 a 乘以 2 的 b 次方;两个运算数都要求是整数,或可以被转换为整数。alert( 2); / 0alert(NaN 2); / 0a

8、lert(Infinity 2); / 0alert(function() 2); / 0alert(undefined 2); / 0alert(null 2); / 02. 当运算数 a 无法被转换为整数时,运算结果为 0。alert(2 ); / 23. 当运算数 b 无法被转转换为整数时,运算结果为运算数 a,相当于 a0。alert(20 NaN); / 20 alert(10 Infinity); / 10alert(“a“ Infinity); / 0 alert(NaN / 运算数均为整数alert(7 1); / Math.floor(7/2) = 3 alert(-7 1); / Math.floor(-7/2) = -4/ 运算数无法被转换为整数alert(NaN 1); / 0 alert(NaN NaN); / 0 alert(20 NaN); 201. 该运算符有两个运算数:aalert(“a“ 2); / 0 alert(“a“ NaN); / 0 alert(20 NaN); / 201. 该运算符有两个运算数:ab,当运算数无法被转换成整数时,运算结果的状况与左移运算符一样。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 教育/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号