(五)JavaScript之[类型转换]

本文详细介绍了JavaScript中不同数据类型的定义与特性,包括字符串、数字、对象、布尔值、函数等,同时展示了如何通过typeof操作符查看数据类型,以及如何使用constructor属性获取构造器。此外,文章还讨论了数组、日期、null和undefined的数据类型,以及如何将数据进行类型转换,如数字到字符串的转换,布尔值和日期的字符串表示,以及字符串到数字的转换。
  1 /**
  2  * 类型转换
  3  *
  4  * JavaScript 数据类型
  5  * 1.不同的数据类型
  6  * string
  7  * number
  8  * object
  9  * boolean
 10  * function
 11  *
 12  * 2.对象类型
 13  * Object
 14  * Date
 15  * Array
 16  *
 17  * 3.不包含任何值的数据类型
 18  * null
 19  * undefined
 20  *
 21  * typeof操作符查看JS的数据类型
 22  *
 23  * constructor(构造器)属性
 24  * */
 25 
 26 console.log(typeof('John'));//string
 27 console.log(typeof(3.14));//number
 28 console.log(typeof(NaN));//number
 29 console.log(typeof(false));//boolean
 30 console.log(typeof([1,2,3,4]));//object,数组也是一种对象
 31 console.log(typeof({name: 'John', age:34}));//object
 32 console.log(typeof(new Date()));//object
 33 console.log(typeof(function () {}));//function
 34 console.log(typeof(myCar));//undefined
 35 console.log(typeof(null));//object,null是一个空对象
 36 
 37 /**
 38  请注意:
 39  NaN 的数据类型是 number
 40  数组(Array)的数据类型是 object
 41  日期(Date)的数据类型为 object
 42  null 的数据类型是 object
 43  未定义变量的数据类型为 undefined
 44  */
 45 
 46 //如果对象是Array或Date,就无法用typeof来判断它们的类型,因为都是返回object
 47 
 48 /**constructor(构造器)属性*/
 49 //constructor 属性返回所有JavaScript变量的构造函数
 50 console.log('John'.constructor);//function String() { [native code] }
 51 console.log((3.14).constructor);//function Number() { [native code] }
 52 console.log(false.constructor);//function Boolean() { [native code] }
 53 console.log([1,2,3,4].constructor);//function Array() { [native code] }
 54 console.log({name: 'John', age: 34}.constructor);//function Object() { [native code] }
 55 console.log(new Date().constructor);//function Date() { [native code] }
 56 console.log(function () {}.constructor);//function Function() { [native code] }
 57 
 58 //使用constructor属性查看对象是否为数组或日期
 59 function isArray(arr) {
 60     return arr.constructor.toString().indexOf('Array') > -1;
 61 }
 62 
 63 
 64 function isDate(date) {
 65     return date.constructor.toString().indexOf('Date') > -1;
 66 }
 67 
 68 console.log(isArray([1,2,3]));//true
 69 console.log(isArray('456'));//false
 70 
 71 console.log(isDate(new Date()));//true
 72 console.log(isDate('vvv'));//false
 73 
 74 //数字转化为字符串
 75 //String(myNumber) 全局方法
 76 //myNumber.toString() Number对象方法
 77 //更多的Number对象方法:http://www.runoob.com/jsref/jsref-obj-number.html
 78 console.log(typeof(String(123)));//string
 79 console.log(typeof((100 + 23).toString()));//string
 80 
 81 //将布尔值转换为字符串
 82 String(false);
 83 String(true);
 84 
 85 false.toString();
 86 true.toString();
 87 
 88 //将日期转换为字符串
 89 //在 Date 方法 中,你可以查看更多关于日期转换为字符串的函数
 90 //Date方法:http://www.runoob.com/jsref/jsref-obj-date.html
 91 console.log(String(Date()));//Tue Mar 29 2016 23:11:01 GMT+0800 (中国标准时间)
 92 console.log(Date().toString());//Tue Mar 29 2016 23:11:25 GMT+0800 (中国标准时间)
 93 
 94 //将字符串转换为数字
 95 //全局方法Number()
 96 //在 Number 方法 中,你可以查看到更多关于字符串转为数字的方法
 97 //Number方法:http://www.runoob.com/jsref/jsref-obj-number.html
 98 console.log(Number('3.14'));//3.14
 99 console.log(Number(" "));//0
100 console.log(Number(""));//0
101 console.log(Number('99 88'));//NaN
102 
103 //一元运算符+
104 var y = '5';
105 console.log(typeof(+y));//number
106 
107 //如果不能转换,它仍然会是一个数字,但值为NaN
108 var z = 'John';
109 console.log(typeof(+z));//number
110 console.log(+z);//NaN
111 
112 //将布尔值转换为数字
113 console.log(Number(false));//0
114 console.log(Number(true));//1
115 
116 //将日期转换为数字
117 console.log(Number(new Date()));//1459265021379
118 console.log(Number(new Date().getTime()));//1459265068371
119 
120 //自动转换类型 Type Conversion
121 //当 JavaScript 尝试操作一个 "错误" 的数据类型时,会自动转换为 "正确" 的数据类型。
122 console.log(5 + null);//5, null为0
123 console.log('5' + null);//5null
124 console.log('5' + 1);//51
125 console.log('5' - 1);//4
126 
127 //当你尝试输出一个对象或一个变量时 JavaScript 会自动调用变量的 toString() 方法:
128 document.getElementById("demo").innerHTML = myVar;
129 
130 // if myVar = {name:"Fjohn"}  // toString 转换为 "[object Object]"
131 // if myVar = [1,2,3,4]       // toString 转换为 "1,2,3,4"
132 // if myVar = new Date()      // toString 转换为 "Fri Jul 18 2014 09:08:55 GMT+0200"
133 //数字和布尔值也经常相互转换:
134 // if myVar = 123             // toString 转换为 "123"
135 // if myVar = true            // toString 转换为 "true"
136 // if myVar = false           // toString 转换为 "false"

 

转载于:https://www.cnblogs.com/lqcdsns/p/5335386.html

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值