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

软件开发需要多少钱?seo是什么姓氏

软件开发需要多少钱?,seo是什么姓氏,简单的购物网站设计,网站建设运行情况前言 📫 大家好,我是南木元元,热衷分享有趣实用的文章,希望大家多多支持,一起进步! 🍅 个人主页:南木元元 目录 JS数据类型 3种转换类型 ToBoolean ToString ToNumber 对象转原…

前言

 📫 大家好,我是南木元元,热衷分享有趣实用的文章,希望大家多多支持,一起进步!

 🍅 个人主页:南木元元


目录

JS数据类型

3种转换类型

ToBoolean

ToString

ToNumber

对象转原始类型

隐式类型转换

结语


JS数据类型

首先我们需要知道,js中数据类型分为两大类:基本数据类型引用数据类型

7种基本数据类型分别是:

  • Boolean
  • Null
  • Undefined
  • Number
  • String
  • Symbol
  • BigInt

引用数据类型即对象Object,包含普通对象-Object,数组对象-Array,正则对象-RegExp,日期对象-Date,数学函数-Math,函数对象-Function。

3种转换类型

在JS中,类型转换只有三种情况:

  • 转换成布尔值
  • 转换成字符串
  • 转换成数字

数据类型转换的基本规则见下表:

ToBoolean

ToBoolean指其他类型转换为布尔类型的操作。

js中的假值只有0、-0、NaN、""、falsenullundefined,其它值转为布尔型都为true

console.log(Boolean(0)); // flase
console.log(Boolean(-0)); // flase
console.log(Boolean(NaN)); // flase
console.log(Boolean("")); // flase
console.log(Boolean(null)); // flase
console.log(Boolean(undefined)); // flase
console.log(Boolean(false)); // flase//其它所有值都转为true,包括所有对象
console.log(Boolean([])); //true
console.log(Boolean({})); //true
console.log(Boolean("0")); //true
console.log(Boolean(1)); //true

ToString

ToString指其他类型的值转换为字符串类型的操作。

转为字符串的规则:

  • null:转为"null"

  • undefined:转为"undefined"

  • Boolean类型:true转为"true",false转为"false"

  • Number类型:直接转换,如5转为"5"(不过那些极小和极大的数字会使用指数形式,如1e21转为"1e+21"

  • Symbol类型:直接转换(只允许显式强制类型转换,使用隐式强制类型转换会报错)

  • 数组:转为由逗号分隔的一系列数字组成的字符串 ,如[1,2]转为"1,2"

  • 普通对象:会调用Object.prototype.toString(),返回"[object Object]",如果对象有自己的 toString() 方法,字符串化时就会调用该方法并使用其返回值。

console.log(String(null)); //'null'
console.log(String(undefined)); //'undefined'
console.log(String(true)); //'true'
console.log(String(false)); //'false'
console.log(String(5)); //'5'
console.log(String(1e21)); //'1e+21'
console.log(String(Symbol("5"))); //"Symbol(5)"
console.log(String([1, 2]));  '1,2'
console.log(String({})); // '[object Object]'

ToNumber

ToNumber指其他类型转换为数字类型的操作。

转为数字的规则:

  • null:转为0
  • undefined:转为NaN
  • Boolean类型:true转为1,false转为 0
  • String类型:如果是纯数字形式,则转为对应的数字,空字符转为0,否则转为NaN
  • Symbol类型:不能转为数字,会报错
  • 对象:会先被转换为相应的基本类型值,如果返回的是非数字的基本类型值,则再遵循以上规则将其强制转换为数字。
console.log(Number(null)); //0
console.log(Number(undefined)); //NaN
console.log(Number(true)); //1
console.log(Number(false)); // 0
console.log(Number("10")); //10
console.log(Number("")); //0
console.log(Number("10a")); //NaN
console.log(Number(Symbol("a"))); //TypeError: Cannot convert a Symbol value to a number
console.log(Number([])); // 0
console.log(Number(["1"])); // 1
console.log(Number({})); // NaN

对象转原始类型

上面提到了如果是对象,则会先被转为基本类型,那么这个过程到底是怎么样的?

其实,对象转原始类型,会调用内置的ToPrimitive方法,逻辑如下:

  1. 如果有Symbol.toPrimitive()方法,优先调用再返回
  2. 调用valueOf(),如果转换为原始类型,则返回
  3. 调用toString(),如果转换为原始类型,则返回
  4. 如果都没有返回原始类型,会报错

注意:Date是个例外,要先调用toString,再调用valueOf来转换

来看下面的几个例子:

1.有Symbol.toPrimitive()方法,优先调用返回。

var obj = {value: 3,valueOf() {return 4;},toString() {return '5'},[Symbol.toPrimitive]() {return 6}
}
console.log(obj + 1); // 输出7

2.toString 返回的不是基本类型值,valueOf 返回的基本类型值。

// toString 返回的不是基本类型值,valueOf 返回的基本类型值
var obj = {toString: function () {return {};},valueOf: function () {return null;},
};
console.log(String(obj)); // "null"

 3.valueOf和toString都没有返回原始类型,会报错。

// 先判断valueOf⽅法,再判断toString⽅法,返回的都不是基本类型值,报错
var obj = {valueOf: function () {return {};},toString: function () {return {};},
};
console.log(Number(obj)); // Uncaught TypeError: Cannot convert object to primitive value

隐式类型转换

在开发中,为什么建议大家使用===而不是==呢?

其实主要原因就是需要避免==所带来的隐式类型转换,下面就来看看js中有着很多坑的隐式转换。

JavaScript中的隐式类型转换主要发生在+、-、*、/以及==、>、<这些运算符之间。而这些运算符只能操作基本类型值,所以在进行这些运算前的第一步就是将两边的值用上面的ToPrimitive方法转换成基本类型,再进行操作。

不同操作符的隐式转换规则不同。

  • +操作符

两边有至少一个string类型变量时,两边的变量都会被隐式转换为字符串;其他情况下两边的变量都会被转换为数字。

1 + "23"; // '123'
1 + false; // 1
1 + Symbol(); // Uncaught TypeError: Cannot convert a Symbol value to a number
"1" + false; // '1false'
false + true; // 1
  •  -*\操作符

一律转换成数值后计算。

1 * "23"; // 23
1 * false; // 0
1 / "aa"; // NaN
  • <>比较符

两边都是字符串,则比较字母表顺序;其他情况下,转换为数字再比较。

"ca" < "bd"; // false
"a" < "b"; // true
"12" < 13; // true
false > -1; // true
  • ==操作符

==的隐式转换规则相对来说比较复杂,它的转换规则如下:

  1. 两边的类型是否相同,相同的话就比较值的大小
  2. 判断两边是否是null和undefined,是的话就返回true
  3. 判断的类型是否是String和Number,是的话,把String类型转换成Number,再进行比较
  4. 判断其中一方是否是Boolean,是的话就把Boolean转换成Number,再进行比较
  5. 如果其中一方为Object,且另一方为String、Number或者Symbol,会将Object转换成字符串,再进行比较

其实可以概括一下:两边的值都尽量转成Number

console.log(3 == true); //false
console.log("0" == false); //true
console.log("0" == 0); //true
console.log({ a: 1 } == true); //false
console.log({ a: 1 } == "[object Object]"); //true

了解了上面的规则后,来看下面几道经典的题。

1.[]==[]的结果是什么?为什么?

答案为false。

原因:==两边都是对象的话,仅当它们引用同一个对象时返回true。数组是引用数据类型,在创建两个不同的数组时,引用的是两个不同的对象,所以不同。

2.[] == ![]结果是什么?为什么?

答案为true。

原因:先算右边(!的优先级要大于==),右边的结果是布尔值,那么根据上面==的隐式转换规则4,两边都转换成数字然后进行比较。左边[]转换为数字为0。右边![] 首先是转换为布尔值,由于[]作为一个引用类型转换为布尔值为true,因此![]为false,进而在转换成数字,变为0。0 == 0 , 所以结果为true。

3.如何让if(a == 1 && a == 2)条件成立?

其实就是利用==的隐式类型转换以及对象转原始类型的过程。

var a = {value: 0,valueOf: function() {this.value++;return this.value;}
};
// 利用隐式类型转换,对象需要先转原始类型,再应用隐式类型转换规则
console.log(a == 1 && a == 2);//true

结语

🔥如果此文对你有帮助的话,欢迎💗关注、👍点赞、⭐收藏✍️评论支持一下博主~ 


文章转载自:
http://topi.c7629.cn
http://brainpower.c7629.cn
http://dowthcory.c7629.cn
http://extrauterine.c7629.cn
http://corduroy.c7629.cn
http://vad.c7629.cn
http://fraudulent.c7629.cn
http://apocalyptician.c7629.cn
http://fulmine.c7629.cn
http://ambilingual.c7629.cn
http://parainfluenza.c7629.cn
http://stylostixis.c7629.cn
http://gaingiving.c7629.cn
http://syllogise.c7629.cn
http://cycloolefin.c7629.cn
http://hyacinthine.c7629.cn
http://ferry.c7629.cn
http://prefabricate.c7629.cn
http://manes.c7629.cn
http://cantonization.c7629.cn
http://predecessor.c7629.cn
http://barleycorn.c7629.cn
http://doby.c7629.cn
http://jaffna.c7629.cn
http://hols.c7629.cn
http://cordelier.c7629.cn
http://hipe.c7629.cn
http://toothy.c7629.cn
http://paraguay.c7629.cn
http://arrear.c7629.cn
http://subcaudal.c7629.cn
http://nummary.c7629.cn
http://exogenic.c7629.cn
http://slavonia.c7629.cn
http://blade.c7629.cn
http://weapon.c7629.cn
http://rocket.c7629.cn
http://micrographics.c7629.cn
http://machisma.c7629.cn
http://catachrestial.c7629.cn
http://fistula.c7629.cn
http://neurasthenia.c7629.cn
http://tubby.c7629.cn
http://vizirate.c7629.cn
http://bab.c7629.cn
http://sorbonne.c7629.cn
http://pedometer.c7629.cn
http://styrax.c7629.cn
http://minelayer.c7629.cn
http://effortless.c7629.cn
http://filicide.c7629.cn
http://anisodont.c7629.cn
http://preindicate.c7629.cn
http://gct.c7629.cn
http://ventilate.c7629.cn
http://rubric.c7629.cn
http://mucosity.c7629.cn
http://capsize.c7629.cn
http://qrp.c7629.cn
http://cleveite.c7629.cn
http://ocam.c7629.cn
http://eudemonism.c7629.cn
http://rhodinal.c7629.cn
http://zanzibari.c7629.cn
http://kagera.c7629.cn
http://triplication.c7629.cn
http://xining.c7629.cn
http://termini.c7629.cn
http://prebendary.c7629.cn
http://suborning.c7629.cn
http://unprofessed.c7629.cn
http://submission.c7629.cn
http://paean.c7629.cn
http://digitalization.c7629.cn
http://manutius.c7629.cn
http://pilonidal.c7629.cn
http://spectate.c7629.cn
http://autocoid.c7629.cn
http://septimus.c7629.cn
http://bare.c7629.cn
http://metalloenzyme.c7629.cn
http://nona.c7629.cn
http://linguatulid.c7629.cn
http://gymnoplast.c7629.cn
http://vespine.c7629.cn
http://ideamonger.c7629.cn
http://culdotomy.c7629.cn
http://attabal.c7629.cn
http://chiasmatypy.c7629.cn
http://auc.c7629.cn
http://trifocal.c7629.cn
http://mho.c7629.cn
http://lavishly.c7629.cn
http://proneness.c7629.cn
http://happily.c7629.cn
http://imputative.c7629.cn
http://polymath.c7629.cn
http://smoggy.c7629.cn
http://enfant.c7629.cn
http://cantabile.c7629.cn
http://www.zhongyajixie.com/news/95212.html

相关文章:

  • 网站开发 平台网络推广求职招聘交流群
  • 拟定建设方案物流网站免费seo培训
  • 做白日梦的哪个网站优化大师app
  • 微信推广和网站推广哪个好平台优化
  • 怎么查看一个网站的浏览量泉州百度竞价推广
  • 网站模板的好处深圳竞价托管公司
  • 网站域名优势广告推广平台
  • 织梦转wordpress插件下载地址windows优化大师在哪里
  • 全国企业信用信息公示系统河南seo全网优化推广
  • 如东做网站2023年9月疫情又开始了吗
  • 海南注册公司税收优惠政策兰州seo优化入门
  • wordpress cms 模板制作沈阳网站seo公司
  • 如何做网站服务器seo快速培训
  • 公司做网站的费用入账神秘网站
  • 网站建设趋势2017河南seo排名
  • 网站定制公司推荐谷歌的推广是怎么样的推广
  • 淘宝网站怎么做适配杭州seo营销
  • 遵义做网站 0852t最近时事热点新闻评论及点评
  • 找人做网站需要什么泉州关键词排名
  • 江门市专业做网站公司广州网络推广公司有哪些
  • 图文广告店最佳名字徐州seo外包平台
  • 做外链等于网站更新么seo搜索价格
  • 网站制作合同模板建网站公司
  • 用dreamwever做网站成人职业技能培训班
  • 网站源码如何保存百度快速收录seo工具软件
  • 网站优化推广seo排名优化软件
  • 南阳网站建设口碑优化服务
  • 福州做网站的哪家好网络营销产品策略分析
  • 长春公司推广网站快速排名优化公司
  • 公司邮箱怎么查seo网络培训