收藏 分销(赏)

JS运算符 — 位运算符.docx

上传人:xrp****65 文档编号:6232830 上传时间:2024-12-02 格式:DOCX 页数:4 大小:20.97KB
下载 相关 举报
JS运算符 — 位运算符.docx_第1页
第1页 / 共4页
JS运算符 — 位运算符.docx_第2页
第2页 / 共4页
JS运算符 — 位运算符.docx_第3页
第3页 / 共4页
JS运算符 — 位运算符.docx_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、JS运算符 位运算符一. 按位与运算符(&)1. 该运算符对它的运算数逐位执行布尔AND操作,只有两个运算数中相应的位都为1时,结果中的这一位才为1,它要求其运算数为整型,如果运算数不是整型,则会尝试将其转换为32位整型,如果无法转换,就返回NaN。/ 运算数均为整型alert(9 & 9); / 9alert(9 & 10); / 8alert(1 & 3); / 1/ 运算数可以被转换为整型alert(9 & 9); / 9alert(9 & 10); / 8alert(1.25 & 3.25); / 1/ 一个或两个运算数均无法被转换整型alert(1 & a); / 0alert( &

2、 /d/); / 0alert(NaN & NaN); / 0alert(Infinity & Infinity); / 0alert(NaN & Infinity); / 0alert(null & null); / 0alert(undefined & undefined); / 0alert(null & undefined); / 0二. 按位或运算符(|)1. 该运算符对它的运算数逐位执行布尔OR操作,如果其中一个运算数中相应位为1或者两个运算数中的相应位都为1,结果中的这一位就为1,它要求其运算数为整型,如果运算数不是整型,则会尝试将其转换为32位整型,如果无法转换,就返回NaN。

3、/ 运算数均为整型alert(9 | 9); / 9alert(9 | 10); / 11alert(1 | 3); / 3/ 运算数可以被转换为整型alert(9 | 9); / 9alert(9 | 10); / 11alert(1.25 | 3.25); / 3/ 一个运算数无法被转换整型alert(1 | a); / 1alert(10 | null); / 10alert(100 | NaN); / 100/ 两个运算数均无法被转换成整型alert( | /d/); / 0alert(NaN | NaN); / 0alert(Infinity | Infinity); / 0aler

4、t(NaN | Infinity); / 0alert(null | null); / 0alert(undefined | undefined); / 0alert(null | undefined); / 0三. 按位非运算符()1. 该运算符的作用,相当于改变运算数的符号并减1。它要求其运算数为整型,如果运算数不是整型,则会尝试将其转换为32位整型,如果无法转换,就返回NaN。alert(5); / 相当于-5 - 1 = -6alert(); / -1alert(); / -1alert(10); / -11alert(10); / -11alert(aa); / -1alert(/d

5、/); / -1alert(undefined); / -1alert(Infinity); / -1alert(NaN); / -1alert(null); / -1alert(function() ); / -12. 的运算原理/ 网上有个老外对的运算原理做了分析,他的分析如下(以foo为例,foo是经过整型转换后的结果):typeof foo = number & !isNaN(foo) & foo != Infinity ? foo 0 ? Math.floor(foo) : Math.ceil(foo) : 0;/ 基于老外的分析,的运算原理可以想象为这样:typeof foo =

6、number & !isNaN(foo) & foo != Infinity ? foo 0 ? -(Math.floor(foo) + 1) : -(Math.ceil(foo) + 1) : -1;3. 一个较特殊的例子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); / -11四. 左移运算符()1. 该运算符有两个运算数:ab,将a左移b位相当于a乘以2的b次方;两个运算数都要求是整数,或可以被转换为整数。/ 运算数均为整数alert(1 2); / 4/ 运算数可以被转换为整数alert(1 2); / 42. 当运算数a无法被转换为整数时,运算结果为0。alert( 2); / 0alert(NaN 2); / 0alert

8、(Infinity 2); / 0alert(function() 2); / 0alert(undefined 2); / 0alert(null 2); / 03. 当运算数b无法被转转换为整数时,运算结果为运算数a,相当于a0。alert(2 ); / 2alert(20 NaN); / 20alert(10 Infinity); / 104. 当运算数a和b均无法被转换为整数时,运算结果为0。alert(a Infinity); / 0alert(NaN )1. 该运算符有两个运算数:a 1); / Math.floor(7/2) = 3alert(-7 1); / Math.floor(-7/2) = -4/ 运算数无法被转换为整数alert(NaN 1); / 0alert(NaN NaN); / 0alert(20 NaN); 20六. 用0补足的右移运算符()1. 该运算符有两个运算数:ab,当运算数无法被转换成整数时,运算结果的情况与左移运算符相同。alert(a 2); / 0alert(a NaN); / 0alert(20 NaN); / 20

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服