当前位置: 首页 > news >正文

长沙做网站的公司对比网站建设和网络营销区别

长沙做网站的公司对比,网站建设和网络营销区别,专业的开发网站建设,怎么代码放到网站上为什么80%的码农都做不了架构师#xff1f; 最近看一篇js装逼小技巧————双波浪号的妙用(将内容转化为数字,或者小数取整)#xff0c;但是本身我的JavaScript水平比较低对其底层操作和其使用范围不甚了解#xff1b;通过翻阅资料现进行简单的整理。 ###装… 为什么80%的码农都做不了架构师    最近看一篇js装逼小技巧————双波浪号的妙用(将内容转化为数字,或者小数取整)但是本身我的JavaScript水平比较低对其底层操作和其使用范围不甚了解通过翻阅资料现进行简单的整理。 ###装逼技巧地址截图### 地址 ###~~的本质### ~~被称为“双按位非”操作符。你通常可以使用它作为代替Math.trunc()的更快的方法。 一个按位非操作符~首先将输入input截取为32位然后将其转换为-(input1)。因此双按位非操作符将输入转换为-(-(input 1)1)使其成为一个趋向于0取整的好工具。对于数字的输入它很像Math.trunc()。失败时返回0,这可能在解决Math.trunc()转换错误返回NaN时是一个很好的替代。 // 单个 ~ console.log(~1337)// -1338 // 数字输入 console.log(~~47.11) // - 47 console.log(~~1.9999) // - 1 console.log(~~3) // - 3然而, 尽管~~可能有更好的性能有经验的程序员通常坚持使用Math.trunc()。要明白为什么这里有一个关于此操作符的分析。 ###适用的情况### 当CPU资源很珍贵时 ~~可能在各平台上都比Math.trunc()快但是你应该在你所关心的所有平台上测试这种猜想。同样你通常需要执行数百万这样的操作来看看在运行时有没有明显的影响。 当不需要关心代码清晰度时 如果你想迷惑其他人或者想在minifier/uglifier时取得更大功效这是一种相对廉价的方式。 ###禁用的情况### 当你的代码需要维护时 代码可读性始终是最重要的。无论你工作在一个团队或是贡献给开源仓库或是单飞。 当你忘记~~永远趋向于0时 新手程序员或许更关注~~的聪明之处却忘记了“只去掉小数部分”的意义。这在将浮点数转换为数组索引或关联有序的值时很容易导致差一错误 这时明显需要一个不同的取整方法。 代码可读性不高往往会导致此问题 打个比方如果你想得到离一个数“最近的整数”你应该用Math.round()而不是~~但是由于程序员的惰性和每次使用需要敲10个键的事实人类的手指往往会战胜冷冷的逻辑导致错误的结果。 相比之下Math.xyz()举例函数的名字清楚的传达了它们的作用减少了可能出现的意外的错误。 当处理大数时 因为~首先将数组转换为32位~~的结果伪值在 ±2.15*10^12左右。如果你没有明确的检查输入值的范围当转换的值最终与原始值有很大差距时用户就可能触发未知的行为 a 2147483647.123 // 比32位最大正数再多一点 console.log(~~a)// - 2147483647 (ok) a 10000 // - 2147493647.123 (ok) console.log(~~a)// - -2147483648 (huh?)一个特别容易中招的地方是在处理Unix时间戳时(从1970年1月1日 00:00:00 UTC开始以秒测量)。一个快速获取的方法: epoch_int ~~(new Date() / 1000) // Date() 以毫秒计量所以我们缩小它 然而当处理2038年1月19日 03:14:07 UTC 之后的时间戳时有时称为Y2038 limit, 可怕的事情发生了 // 2040年1月1日 00:00:00.123 UTC的时间戳 epoch new Date(2040-01-01) / 1000 0.123 // - 2208988800.123// 回到未来! epoch_int ~~epoch // - -2085978496 console.log(new Date(epoch_int * 1000)) // - Wed Nov 25 1903 17:31:44 UTC// 这很搞笑让我们来取得正确结论 epoch_flr Math.floor(epoch) // - 2208988800 console.log(new Date(epoch_flr * 1000)) // - Sun Jan 01 2040 00:00:00 UTC当原始输入的数据类型不确定时 因为~~可以将任何非数字类型转换为0 console.log(~~[]) // - 0 console.log(~~NaN) // - 0 console.log(~~null) // - 0一些程序员将其看作适当输入验证的替代品。然而这将导致奇怪的逻辑问题因此你不能辨别违法输入还是真正的0。因此这并不推荐。 当很多人认为~~X Math.floor(X)时 很多人由于很多原因错误的把”双按位非”等同于Math.floor()。如果你不能准确地使用它最终你很有可能会滥用它。 另一些人很细心的注意正数使用Math.floor()而负数使用Math.ceil()但这又强制你在处理它的时候需要停下来想一想你处理的数是什么值。这又违背了使用~~快捷无陷阱的目的。 ###结论### 谨慎使用。在应用前检查值。仔细记录被转化值的相关假设。审查代码至少处理逻辑错误不合法的输入作为合法的0传入其他代码模块输入转换后范围错误错误的舍入方向导致差一错误 转载于:https://my.oschina.net/bbhan/blog/1498466
http://www.sadfv.cn/news/247016/

相关文章:

  • 电商网站的制作流程曲阜文化建设示范区网站
  • 吉林大学学院网站建设群郑州中原区建设局网站
  • 岚皋网站建设稿定设计在线ps
  • 郴州网站制作公司地址react 和wordpress
  • 中国建设企业银行登录网站wordpress运行php文件下载
  • 做网站需要用c语言吗安徽教育平台网站建设
  • 手机版网站开发人员选项微信小说网站开发
  • 铲车找事做找哪些网站360免费建站可以免费又永久吗
  • 东莞市住房建设局网站首页网站开发 非对称加密
  • 重庆网站优化建设免费空间大全
  • 合肥网站建电子商务seo优化
  • 在线旅游网站建设前的调研代发关键词包收录
  • 中国航发网上商城宁波网站优化体验
  • ps做网站宽度专业团队建设方案
  • 学做美食饮品网站网站 错误代码
  • idea15网站开发书法网站模版
  • 运营好网站佛山市住房和建设局网站首页
  • 网站开发文件夹组织结构wordpress 社交登录
  • 卓商网站建设莱州网页
  • 摄影网站免费公司网站设计案例
  • 平面设计哪个网站素材好杭州建设网站公司哪家好
  • 戴瑞企业网站建设需求如何将自己做的网页做成网站
  • 微官网和手机网站区别oppo软件商店官网下载
  • 邱县做网站四川网络推广推广机构
  • 宝安区网站建设公司wordpress增加额外链接
  • 网站用户推广重庆网络公司一览表
  • 《建设监理》网站无锡做网站费用
  • 蓝色风格企业网站模板深圳做网站设计
  • 蚌埠做网站多少钱Wordpress打开速度优化插件
  • 江镇做包子网站安卓系统开发软件