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

做算命网站赚钱吗绵阳市做公司网站

做算命网站赚钱吗,绵阳市做公司网站,人力资源公司怎么找客户,app的设计与开发typeof 、instance of 先聊聊JavaScript基本类型数据类型5种含值数据类型2种不含值类型 6种类型的*对象* typeofinstanceof总结进一步扩展一下具体讨论一下typeof局限性扩展判断方法 很多时候#xff0c;回头望#xff0c;理解会更深刻#xff0c;也希望能帮助一些初学的同学… typeof 、instance of 先聊聊JavaScript基本类型数据类型5种含值数据类型2种不含值类型 6种类型的*对象* typeofinstanceof总结进一步扩展一下具体讨论一下typeof局限性扩展判断方法 很多时候回头望理解会更深刻也希望能帮助一些初学的同学理解。 先聊聊JavaScript基本类型 以下类型一定注意区别 数据类型 5种含值数据类型 在 JavaScript 中有 5 种不同的可以包含值的数据类型 stringnumberbooleanobjectfunction 2种不含值类型 nullundefined 6种类型的对象 ObjectDateArrayStringNumberBoolean typeof 您可以使用 typeof 运算符来确定 JavaScript 变量的数据类型返回对应数据类型字符串。 这是官方的一句话细品这说明什么 说明我们可以通过这个运算符判断出含值和不含值的数据类型。 而类似于Array、Date等类型的对象我们无法具体判断只能判断出时一个object数据类型。 typeof Bill // 返回 string typeof 3.14 // 返回 number typeof NaN // 返回 number typeof false // 返回 boolean typeof [1,2,3,4] // 返回 object typeof {name:Bill, age:19} // 返回 object typeof new Date() // 返回 object typeof function () {} // 返回 function typeof myCar // 返回 undefined * typeof null // 返回 object需要注意的是 NaN 的数据类型是数字数组的数据类型是对象日期的数据类型是对象null 的数据类型是 object未定义变量的数据类型为 undefined *未赋值的变量的数据类型也是 undefined * 看到这心里可能会有疑惑说好的可以判断数据类型null为什么是object 对咯。就他最特别这实际上是语言设计上的一个错误并且由于历史原因一直保留到了现在。所以他是特立独行的—一个bug。 原理是这样的不同的对象在底层都表示为二进制 在 JavaScript 中二进制前三位都为 0 的话会被判断为 object 类型 null 的二进制表示是全 0自然前三位也是 0 所以执行 typeof 时会返回“object”。想了解可以看看本链接 说到这里大家是不是明明白白了除了一个bug null,typeof只能判断含值和不含值的数据类型。 像Array、Data等等这些对象的类型就无法具体判断了。 那么还有别的办法吗 答案是肯定的 instanceof instanceof 是一个二元运算符用于测试构造函数的 prototype 属性是否出现在对象的原型链上。 如果对象是指定的构造函数创建的实例或者继承自该构造函数的原型链instanceof 运算符会返回 true。 class Car {} const myCar new Car();myCar instanceof Car // true myCar instanceof Object // true因为Car继承自Object[] instanceof Array // true ([]) instanceof Object // true因为所有的数组都是对象function MyFunc() {} const myFunc new MyFunc();myFunc instanceof MyFunc // true myFunc instanceof Object // true因为所有函数都是对象// 注意字面量形式创建的基本类型不是任何构造函数的实例 hello instanceof String // false 42 instanceof Number // false true instanceof Boolean // false 由于 instanceof 是基于原型链进行检查的它能够用于检测复杂对象类型比如自定义对象和内置对象实例如 Array、Date 等。然而它不适用于基本数据类型。 总结 使用 typeof 来检测基本数据类型除了 null。使用 instanceof 来检查一个对象是否是某个特定类或构造函数的实例或者说检测一个对象是否继承自某个原型。要准确地判断一个变量是否为 null应使用严格等于比较 ( null)。对于其他更复杂的类型检查需求可能需要使用其他方法比如 Object.prototype.toString.call(value)。 关于第三个这里说一下undefined 与 null 的区别 undefined 和 null 值相等但类型不同 typeof undefined // undefined typeof null // objectnull undefined // false null undefined // trueps:如果有原型和原型链不太熟悉的我会抽空补一篇放下链接还没有就说明还没写。。。 进一步扩展一下 具体讨论一下typeof局限性 typeof 运算符对于基本数据类型通常很有效但在某些情况下它并不能提供足够的信息来准确判断值的类型。以下是一些 typeof 无法准确检测的情况 区分对象类型typeof 将任何对象类型都返回为 “object”不论它是一个普通的对象字面量、数组、正则表达式还是其他内置对象。 typeof []; // object但实际上是 Array typeof {}; // object普通对象 typeof /regex/; // object在非标准的浏览器中可能返回 function typeof new Date(); // object但实际上是 Datenull 值typeof null 返回 “object”这实际上是一个长期存在的 JavaScript 错误。 typeof null; // object应该是 null3.区分数组和普通对象如上所述数组和普通对象都返回 “object”。 typeof []; // object没有区分它是 Array4.函数对象和普通对象虽然 typeof 可以识别函数对象返回 “function”但无法区分不同种类的函数例如普通函数、箭头函数、异步函数、生成器函数等。 typeof function(){}; // function typeof (() {}); // function typeof async function(){}; // function typeof function*(){}; // function5.原始包装对象和原始值对于字符串、数字和布尔值的原始包装对象typeof 会将其视为 “object”而非它们各自的原始类型。 typeof new String(string); // object typeof new Number(100); // object typeof new Boolean(true); // object6.特殊对象typeof 对于特殊的对象比如 Map、Set、WeakMap 和 WeakSet 等也只能返回 “object”。 typeof new Map(); // object typeof new Set(); // objectUndefined vs. undeclared虽然 typeof 在处理未声明变量时不会抛出错误并且会返回 “undefined”但它无法区分一个变量是未定义还是未声明。 let x; typeof x; // undefined typeof y; // undefined即使 y 没有被声明由于这些局限性当需要更精确地判断复杂数据类型时开发者通常会采用其他方法如 instanceof 检查、Object.prototype.toString.call() 方法或者在现代JavaScript框架和库中定义的自己的类型判断函数。 扩展判断方法 JavaScript 提供了 Array.isArray() 方法来特别判断一个值是否为数组。它比 typeof 更精确因为 typeof 对于数组会返回 “object”。 对于其他类型的检查虽然没有内置的类似 Array.isArray() 这样针对特定数据结构的方法但我们可以使用 Object.prototype.toString.call() 来获取对象的类class信息 let toString Object.prototype.toString;// 使用 toString 方法检测不同类型 toString.call([]); // [object Array] toString.call({}); // [object Object] toString.call(); // [object String] toString.call(new Date()); // [object Date] toString.call(1); // [object Number] toString.call(true); // [object Boolean] toString.call(function(){}); // [object Function] toString.call(/regex/); // [object RegExp] toString.call(null); // [object Null] toString.call(undefined); // [object Undefined]通过上面的方法你可以构建自己的类型检查函数就像 Array.isArray() 那样。例如 function isDate(value) {return toString.call(value) [object Date]; }此外ES6 引入了几个新的全局对象也带来了类似的静态方法用于确定值是否为特定类型的实例 ArrayBuffer.isView(value): 检查一个值是否是类型化数组视图比如 Int8Array 实例或其他类型化数组视图。 ArrayBuffer.isView(new Int8Array()); // true ArrayBuffer.isView(new Float32Array()); // true ArrayBuffer.isView([]); // falseNumber.isNaN(value): 确定传入的值是否是 NaN且更准确地与全局 isNaN() 函数区分开来。 Number.isNaN(NaN); // true Number.isNaN(NaN); // falseNumber.isInteger(value): 判断给定的参数是否为整数。 Number.isInteger(1); // true Number.isInteger(1.5); // falseNumber.isFinite(value): 检查一个值是否为有限数。 Number.isFinite(Infinity); // false Number.isFinite(-Infinity); // false Number.isFinite(1); // true这些方法为不同类型的检测提供了官方支持并保证了结果的准确性。但仍然没有像 Array.isArray() 那样的方法用于直接检测 Map, Set, WeakMap, 或 WeakSet 等数据类型。在这些情况下通常需要使用上述 Object.prototype.toString.call() 方式来进行类型的判断。
http://www.hkea.cn/news/14377322/

相关文章:

  • 招聘网站维护什么内容wordpress能批量上传图片么
  • 外省住房和城乡建设厅网站郑州网约车资格证网上报名
  • 站群系统程序没有网站怎么做链接视频教程
  • 如何制作简易个人网站创建全国文明城市宣传栏
  • 网站建设 坚持实用原则开网站怎么赚钱
  • 简单网站建设设计网站开发的形式有哪些
  • vps打开网站很慢40岁软件工程师的出路
  • 宿迁城乡建设监督网站公司起名网站十大排名
  • pw网站更换域名深圳专业seo
  • 做网站的公司怎么找客户个人微信公众号怎么做微网站
  • 开发个网站开票名称是什么意思wordpress的优势和
  • 仿做唯品会网站网站建设与管理专业好吗
  • 珠宝公司网站模版菜鸟网络属于哪个公司
  • 做网站需要怎么样的服务器商业模式包括哪些模式
  • 阆中网站网站建设互联网推广营销方案
  • 怎么样做网站爬虫wordpress自动评论软件
  • 网站怎么做推广和宣传语苏州网站设计公司官网
  • 网站维护目标哪个网站的系统
  • 做软件营销网站怎么样衡阳seo优化首选
  • 白城市住房建设局网站某公司的网站建设的资金预算书
  • 免费的制作网站程序洛阳网站建设lyland
  • 网站设计便宜高端网站建设文案
  • 深圳网站建设 利科技有限公司wordpress导入pdf
  • cms网站开发价格腾讯企业邮箱域名格式
  • 杭州网站开发工资广告传媒公司排名
  • 长沙优秀网站建设钦州建设网站
  • 网站统计代码放哪里手机网址全部出来
  • 东莞做企业网站做seo 教你如何选择网站关键词
  • 百度搜到网站网站建设与管理岗位
  • 商城网站建设实训报告模板个人网页设计与实现论文