JS函数前面加!、+、-、~符号以及;是什么意思、按位取反 - 蛛蛛侠

文章推薦指數: 80 %
投票人數:10人

javascript. 简介JS函数前面加!、+、-、~符号以及;分别代表什么意思,在使用中起什么作用,按位取反什么意思,如何计算按位取反。

您现在的位置是:首页>技术学习>javascript 网站首页 技术学习 javascript JS函数前面加!、+、-、~符号以及;是什么意思、按位取反 技术学习 2019-04-06 1107已阅读 13 javascript  简介 JS函数前面加!、+、-、~符号以及;分别代表什么意思,在使用中起什么作用,按位取反什么意思,如何计算按位取反。

1.函数定义和调用 1-1常见的函数定义和调用 //匿名函数: function(){};//会报错, varfn=function(){};//不会报错 fn(); //普通函数: functionmyFn(){}; myFn(); 1-2错误的直接调用 function(){}(); functionmyFn(){}(); //这样的直接调用方法解析器无法理解,因此会报错。

1-3正确的直接调用方法 //常见的直接调用 (function(){})(); varfn=function(){}(); (functionmyFn(){})(); //特殊直接调用(有强制执行的感觉) (function(){}()) (functionmyFn(){}()) 原理:将函数用括号包括起来,解析器会把函数解析为函数表达式,而函数表达式可以直接调用。

因此,其他能将函数体变成函数表达式的方法,都可以让解析器正确调用定义函数,比如上面的第二种调用方法。

以及其他的一些符号,如:!、+、-、~ (function(){ console.log('()'); })();//() //console.log()中的()也可以让函数解析为表达式。

console.log(function(){ console.log('()');//()可正常输出 });//函数无返回值,所以输出undefined; !function(){ console.log('!'); }();//! +function(){ console.log('+'); }();//+ -function(){ console.log('-'); }();//- ~function(){ console.log('~'); }();//~ //可见上面的函数都执行了。

1-4各个符号的含义 ()、!、+、-、~这些符号写在函数前代表不同的含义,但是本质上是对函数的返回值进行相应的操作。

没返回值的函数默认返回undefined console.log((function(){})());//undefind; console.log((function(){ return; })());//undefind; 各个符号的含义 //()没什么实际意义,不操作返回值 console.log((function(){ return'aa'; })());//aa //!对返回值的真假取反 console.log(!function(){ return; }());//trueundefined属于false, console.log(!function(){ return"a"; }());//false字符串a属于真, console.log(!function(){ return0; }());//true数字0属于假, console.log(!function(){ return"0"; }());//false字符串0属于真, //+、-是对返回值进行数学运算 console.log(+function(){ return5.1; }());//5.1 console.log(-function(){ return5.1; }());//-5.1 console.log(+function(){ return"5.1"; }());//5.1可见返回值不是数字类型的时候+、-会将返回值进行强制转换 console.log(-function(){ return"-5.1"; }());//5.1强制转化 console.log(+function(){ return"a5.1"; }());//NaN强制转化后为非数字NaN console.log(+function(){ return; }());//NaNundefined强制转化也为NaN //~对返回值进行按位取反 //所有正整数的按位取反是其本身+1的负数, //所有负整数的按位取反是其本身+1的绝对值, //零的按位取反是-1 //按位取反原理详见下面 console.log(~function(){ return5; }());//-6 console.log(~function(){ return-5; }());//4 console.log(~function(){ return0; }());//-1 console.log(~function(){ return"5"; }());//-6按位取反也会对返回值进行强制转换,将字符串5转化为数字5,然后再按位取反 console.log(~function(){ return"-5"; }());//4 console.log(~function(){ returntrue; }());//-2ture会被转化为1 console.log(~function(){ returnfalse; }());//-1false被转化为0 console.log(~function(){ return"a"; }());//-1其他非数字或不能转化为数字类型的返回值,统一当做0处理 1-5分号;的含义 function前写;是为了防止代码压缩时,前面代码没写;造成报错。

1-6按位取反~ 二进制数在内存中是以补码的形式存放的。

计算机中的符号数有三种表示方法,即原码、反码和补码。

三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同。

例:(四位二进制表示)原码 +4:0100其中第一个0是符号位,代表符号+;后面的数字是数值位 -4:1100其中第一个1是符号位,代表符号-;后面的数字是数值位 三种形式的转化方法: 正数:(正数原码、反码、补码、三者相等) 原码:符号位0(即代表+号),加上数字的二进制形式。

反码=原码 补码=原码 负数: 原码:符号位1(即代表-号),加上数字的二进制形式 反码:相对于原码,符号位不变,数值位依次取反(0变1,1变0)。

补码:相对于原码,符号位不变,数值位依次取反,然后再加1。

(即补码=反码+1) 零: 0有+0和-0两种形式,分别按照上面的进行计算即可。

按位取反原理: 对数字的补码(即内存中的存储形式),进行依次取反,得取反后数字的补码,然后将其转化为10进制,即可得取反后数值。

计算示例:(四位二进制表示) +5: 1.计算原码:0101, 2.计算补码:0101,正数补码和原码相同, 3.对补码依次取反:1010,(取反后的数字的补码,由符号位可知为负数) 4.取反后数字反码:1001,负数的反码=补码减1, 5.取反后数字原码:1110,相对于反码,符号位不变,数值位依次取反, 6.转化为十进制:-6。

-4: 1.计算原码:1100,由符号位可知为负数, 2.计算反码:1011,负数反码=相对于原码符号位不变,数值位依次取反, 3.计算补码:1100,负数补码=反码+1, 4.对补码依次取反:0011,得取反后数字补码,可知为正数, 5.取反后数字原码:0011,正数原码和补码相同。

6.转化为10进制:+3。

个人CSDN博客 11 很赞哦!(13) 打赏本站 关闭 感谢您的支持,我会继续努力的! 扫码打赏,你说多少就多少 上一篇:PS的一些基本操作以及快捷键 下一篇:JS中的数据类型 相关文章 javascript基础 JS中的数据类型 JS的内置对象(Date、String、Array、Math、Event) 浏览器对象(Window、History、Location、Navigator、Screen) DOM对象 JS事件绑定、冒泡/捕获、常见的兼容处理、委托、阻止默认行为和冒泡 JS中的正则 通过file按钮上传的图片如何在当前页面显示出来FileReader JS、Jquery中jsonp的原理以及使用方法 JS中新增的对象:Map、Set JS生成器-generator JS中的块级作用域,var、let、const三者的区别 特别推荐 如何自己写后台搭建支持mkdown的个人博客阅读 如何使用Homestead搭建laravel本地开发环境阅读 centos7.4安装laravel开发环境阅读 点击排行 JS中新增的对象:Map、Set JS函数前面加!、+、-、~符号以及;是什么意思、按位取反 2019-04-06 如何自己写后台搭建支持mkdown的个人博客 2019-02-21 如何使用Homestead搭建laravel本地开发环境 2019-02-22 JS事件绑定、冒泡/捕获、常见的兼容处理、委托、阻止默认行为和冒泡 2019-05-16 标签云 建站 javascript PHP Laravel 服务器 HTML CSS Photoshop Git Top



請為這篇文章評分?