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

怎样建立一个免费的网站大连百度网站优化

怎样建立一个免费的网站,大连百度网站优化,wordpress博客中文插件,大连哪家公司做网站好判断两个变量是否相等在任何编程语言中都是非常重要的功能。JavaScript 提供了 和 两种判断两个变量是否相等的运算符#xff0c;但我们开始学习的时候 JavaScript 的时候#xff0c;就被一遍又一遍的告知#xff1a; 要求变量的类型和值均相等#xff0c;才能返回true。…判断两个变量是否相等在任何编程语言中都是非常重要的功能。JavaScript 提供了 和 两种判断两个变量是否相等的运算符但我们开始学习的时候 JavaScript 的时候就被一遍又一遍的告知 要求变量的类型和值均相等才能返回true。使用 来避免因JavaScript 类型转换带来的问题。这样增加了 JavaScript 语法的灵活性但是也带来很多头疼的问题使用 /!是 /! 来判断两个变量是否相等为什么JS 编码推荐使用 /! 而不是 /!大部分的编程语言不都是使用/!么为了要回答这个问题让我们看一下 JavaScript 所遵守的标准 ECMAScript 对于和 是怎么描述的吧 详解Identity Equal或 Strict Equal, 在 ECMAScript -- Java Script 所遵守的标准中算法的定义为 The Strict Equality Comparison Algorithm 规则如下如果 参数 x 的数据类型和 参数 y 的数据类型不一致这返回 false如果 参数 x 的数据类型为 undenfined, 则返回 true如果 参数 x 的数据类型为 null, 则返回 true如果 参数 x 的数据类型为 Number, 则如果 x 是  NaN 返回 false如果 y 是  NaN 返回 false如果 x 是 0 并且 y 为 -0 返回 true如果 x 是 -0 并且 y 为 0 返回 true如果 x 和 y 有着相同的数值返回 true返回 false如果 x 的类型为 String, 且 x 与 y 有着相同的顺序排列的字符串 返回 true如果 x 的类型为 boolean, 且 x 与 y 拥有相同的布尔值返回 true如果 x 的类型为 Object, 且 x 与 y 指向相同的对象返回 true伪代码1 functionstrictEqual(x, y) {2 //If Type(x) is different from Type(y), return false.3 if (!valueEqual(typeof (x), typeof(y))) {4 return false;5 }67 //If Type(x) is Undefined, return true.8 //If Type(x) is Null, return true.9 if (valueEqual(typeof (x), undefined) || valueEqual(x, null)) {10 return true;11 }121314 if (valueEqual(typeof (x), number)) {15 //If x is NaN, return false.16 if(isNaN(x)) {17 return false;18 }1920 //If y is NaN, return false.21 if(isNaN(y)) {22 return false;23 }2425 //If x is 0 and y is −0, return true.26 if (valueEqual(x, 0) valueEqual(y, -0)) {27 return true;28 }2930 //If x is −0 and y is 0, return true.31 if (valueEqual(y, 0) valueEqual(x, -0)) {32 return true;33 }3435 //If x is the same Number value as y, return true.36 if(valueEqual(x, y)) {37 return true;38 }3940 return false;41 }4243 if (valueEqual(typeof (x), string)) {44 //If Type(x) is String, then return true if x and y are exactly45 //the same sequence of characters46 //(same length and same characters in corresponding positions); otherwise, return false.47 returnhasSameChar(x, y);48 }4950 if (valueEqual(typeof (x), boolean)) {51 returnvalueEqual(x, y);52 }5354 if (valueEqual(typeof (x), object)) {55 //Return true if x and y refer to the same object. Otherwise, return false.56 returnhasSameReference(x, y);57 }5859 return false;60 }View Code逻辑图 详解Equal, 在两个对比变量数据类型相同时 和 有着一样的行为算法实现但是当两个对比的变量数据类型不同时ECMAScript/JavaScript 有着自定义的转换和比较逻辑参考 The Abstract Equality Comparison Algorithm如果 x 为 null, 且 y 为 undefined, 返回 true如果 x 为 undefined, 且 y 为 null, 返回 true如果 x 的数据类型为 Number, 且 y 的数据类型为 string, 则将 y 转换为 Number,然后进行比较如果 x 的数据类型为 String, 且 y 的数据类型为 Number, 则将 x 转换为 Number,然后进行比较如果 x 的数据类型为 Boolean, 将x 转换为数字类型,当 x 为 true 时转换为 1 否则转换为 0 进行比较如果 y 的数据类型为 Boolean, 将 y 转换为数字类型当 y 为 true 时转换为 1 否则转换为 0 进行比较如果 x 的数据类型为 String 或者 Number, 且 y 为 Object, 则使用 valueOf 函数将 y 转换为简单类型进行比较如果 y 的数据类型为 String 或者 Number, 且 x 为 Object, 则使用 valueOf 函数将 x 转换为简单类型进行比较返回 false从上述定义不难总结出以下几点该算法为递归算法转换后继续调用其自身直到能比较且返回为止该算法依赖于 Strict Equal 的实现进行转换时具体转换依赖于数据类型的定义的方法如Number() 函数伪代码1 functionabstractEqual(x, y) {23 //if x and y has same type4 if (valueEqual(typeof (x), typeof(y))) {5 returnstrictEqual(x, y);6 }78 //If x is null and y is undefined, return true.9 if (valueEqual(x, null) valueEqual(y, undefined)) {10 return true;11 }1213 //If x is undefined and y is null, return true.14 if (valueEqual(x, undefined) valueEqual(y, null)) {15 return true;16 }1718 //Type(x) is Number and Type(y) is String,19 if (valueEqual(typeof (x), number) valueEqual(typeof (y), string)) {2021 var convertedY Number(y);2223 //return the result of the comparison x ToNumber(y)24 returnabstractEqual(x, convertedY);25 }2627 //Type(x) is Number and Type(y) is String,28 if (valueEqual(typeof (x), string) valueEqual(typeof (y), number)) {2930 var convertedX Number(x);3132 //return the result of the comparison x ToNumber(y)33 returnabstractEqual(convertedX, y);34 }3536 //Type(x) is Boolean, return the result of the comparison ToNumber(x) y.37 if (valueEqual(typeof (x), boolean)) {38 var convertedToIntX Number(x);3940 returnabstractEqual(convertedToIntX, y);41 }4243 //Type(x) is Boolean44 if (valueEqual(typeof (y), boolean)) {45 var convertedToIntY Number(y);4647 //return the result of the comparison ToNumber(x) y.48 returnabstractEqual(x, convertedToIntY);49 }5051 //If Type(x) is either String or Number and Type(y) is Object,52 if ((valueEqual(typeof (x), string) || valueEqual(typeof (x), number)) valueEqual(typeof (y), object)) {53 var toPrimitiveY y.valueOf();5455 //return the result of the comparison x ToPrimitive(y).56 returnabstractEqual(x, toPrimitiveY);57 }585960 //If Type(x) is either String or Number and Type(y) is Object,61 if ((valueEqual(typeof (y), string) || valueEqual(typeof (y), number)) valueEqual(typeof (x), object)) {62 var toPrimitiveX x.valueOf();6364 //return the result of the comparison x ToPrimitive(y).65 returnabstractEqual(toPrimitiveX, y);66 }6768 return false;69 }View Code逻辑图附加上本例使用的判断相等的函数的代码直接使用了 JavaScript 的 来实现为了 demo 么呵呵这是一个很号的接口实际上我也实现不出来 :).1 functionvalueEqual(x, y) {2 return x y;3 }45 functionhasSameChar(x, y) {6 return x y;7 }89 functionhasSameReference(x, y) {10 return x y;11 }View Code总结现在我们已经知道 和 在判断两个变量是否相等时所使用的算法的基本实现。帮助我们理解一些 JavaScript 中判断相等时一些诡异“ 的行为。把我们写的 Script 放在一个 HTML 文件里用 Chrome 代开按 F12, 开始我们的调试吧测试 JS 代码运行结果JS 代码运行结果备注var x 1, y 1;console.log(strictEqual(x,y)); console.log(abstractEqual(x,y))false, truevar x 1, y 1;console.log(x y); console.log(x y)false,true 时y 先转换为数字类型1var x 1, y not a number;console.log(strictEqual(x,y)); console.log(abstractEqual(x,y))false, falasevar x 1, y not a number;console.log(x y); console.log(x y)false, falsey 转换为数字类型失败返回 NaN,NaN 不与任何值相等包括 NaN 自身var x undefined, y null;console.log(strictEqual(x,y)); console.log(abstractEqual(x,y))falsetruevar x undefined, y null;console.log(xy); console.log(x y)false,true 时 null ! undefined 时规定了 null 与 undefined 的相等var x true, y 2;console.log(strictEqual(x,y)); console.log(abstractEqual(x,y))false,falsevar x true, y 2;console.log(x y); console.log(x y)false,falsetrue 转换为数字 1var x false, y 0;console.log(strictEqual(x,y)); console.log(abstractEqual(x,y))false,truevar x false, y 0;console.log(x y); console.log(x y)falsetruefalse 转换为数字 0var x {name:test,valueOf:function(){return 1;}},y 1; console.log(strictEqual(x,y));console.log(abstractEqual(x,y));false,truevar x {name:test,valueOf:function(){return 1;}},y 1; console.log(x y);console.log(x y);false,truex.valueOf()  返回数字 1与 y 相等
http://www.pierceye.com/news/579853/

相关文章:

  • 企业网站空间不足怎么办incapsula wordpress
  • 网站建设 镇江万达wordpress简
  • 做p2p理财网站开发公司销售人员竞聘演讲稿
  • 建设网站广州唯品会网站架构
  • 网站开发的国内外研究现状家庭装潢设计
  • 安卓从网站获取视频怎么做有没有做网站的公司
  • 网站设计计划书的内容如何做1个手机网站
  • 义乌网站建设技术托管seo营销服务
  • 一块钱购物网站山东专业网站建设
  • 凡科建站怎么删除网站建设电子商务网站建设分析
  • 公众号 微网站开发西安网站建设熊掌号
  • 商城网站开发哪家好长春网站建设推荐网诚传媒
  • 网站被墙怎么做跳转重庆网站建设找重庆万为
  • 学做网站的书哪些好电子商务网站设计包括哪些内容
  • 网站建设需求 百度文库kompozer wordpress
  • 菜篮网网站开发技术山东省住房和城乡建设厅领导名单
  • 域名备案与网站备案的区别深圳建筑公司招聘信息
  • 网站开发完后如何上线淘宝上网站建设好便宜
  • 云南省科技网站网站建设的推广渠道
  • 网页网站设计公司排行榜南京专业app开发定制
  • 网站开发人员就业前景公司的网站建设注意点
  • 做英文网站2014深圳网站设计g
  • 温州文成县高端网站设计做网站有生意吗
  • 网站开发说明书模板产品设计考研
  • seo网站排名优化软件京东 wordpress
  • 有些网站为什么可以做资讯微信小程序vr全景
  • 做网站的开发工具长春百度关键词优化
  • 网站建设所需人力网站制作的必备技巧有哪些
  • 上饶网站建设推广四川城乡建设网网站
  • 网站logo怎么改服装手机商城网站建设