js面试题--------JS中数字和字符,布尔类型相加相减问题

JS中数字和字符相加相减问题

<html lang="en">
<head>
    <meta charset="utf-8" />
    <title></title>

</head>
<body>
</body>
</html>
<script type="text/javascript">
    var a = 100;
    var b = "100";
    alert(b- a);
    alert(typeof (b- a));
    alert(a + b - a);
    alert(typeof (a + b - a));
    alert(a + b);
    alert(typeof (a + b));
    alert(a + b - b);
    alert(typeof (a + b - b));
    alert(a + b - b - b);
    alert(typeof (a + b - b - b));
    alert(true + 1);//2 ,true被转化为1,false转化为0
    alert(true + "1");//true1 ,  true被转化为字符串“true”
</script>

  执行结果

0

number

100000

number

100100

string

100000

number

99900

number

2

true1

由此可知道JS在进行这种运算时 仅仅会在2个值相加时优先推断为string类型 其它情况下(比如“-”。“*”。“/”)都默觉得number型运算。!

时间: 2024-10-13 16:11:12

js面试题--------JS中数字和字符,布尔类型相加相减问题的相关文章

未经处理的异常在 System.Data.dll 中发生。其他信息:在应使用条件的上下文(在 &#39;***&#39; 附近)中指定了非布尔类型的表达式。

机房收费系统中,有些人在联合查询这个模块用的是存储过程,我先尝试着在数据库中建立了一个视图,然后在UI层做个判断并生成查询条件strCondition. 在机房收费系统的"联合查询"模块中出现的问题:"System.Data.SqlClient.SqlException"类型的未经处理的异常在 System.Data.dll 中发生.其他信息: 在应使用条件的上下文(在 '@strCondition' 附近)中指定了非布尔类型的表达式. 出错的DAL层代码为: Pu

未经处理的异常在 System.Data.dll 中发生。其它信息:在应使用条件的上下文(在 &amp;#39;***&amp;#39; 附近)中指定了非布尔类型的表达式。

机房收费系统中,有些人在联合查询这个模块用的是存储过程,我先尝试着在数据库中建立了一个视图,然后在UI层做个推断并生成查询条件strCondition. 在机房收费系统的"联合查询"模块中出现的问题:"System.Data.SqlClient.SqlException"类型的未经处理的异常在 System.Data.dll 中发生.其它信息: 在应使用条件的上下文(在 '@strCondition' 附近)中指定了非布尔类型的表达式. 出错的DAL层代码为: Pu

关于java中char类型和int类型相加结果的面试题

运行结果为 3 51 C 故而总结了以下几点: 举例子说明一下. System.out.println('0'+'A');// 48+65 = 113 未指定类型--输出int System.out.println((char)('0'+'A'));// q 强转char --输出char System.out.println(10+'A'); //75 未指定类型--输出int System.out.println((char)10+'A'); //75 未指定类型--输出int System

js面试题--js的继承

js是门灵活的语言,实现一种功能往往有多种做法,ECMAScript没有明确的继承机制,而是通过模仿实现的,根据js语言的本身的特性,js实现继承有以下通用的几种方式 1.使用对象冒充实现继承(该种实现方式可以实现多继承) 实现原理:让父类的构造函数成为子类的方法,然后调用该子类的方法,通过this关键字给所有的属性和方法赋值 Js代码   function Parent(firstname) { this.fname=firstname; this.age=40; this.sayAge=fu

JS中小数相加相减时出现很长的小数点的解决方式

1.问题: 平时写的代码中会出现这种情况,parseFloat(11.3-10.1) 运行的结果依然是1.200000000000001 代码示例: var arr = [0.0111,11.002,0.3,1.5,1.61] var total = 0 arr.forEach(item =>{ total += item }) console.log(total) 返回的结果---  14.423100000000002,这种情况就不合常理. 2.解决方案: 这里有一种可行的解决方法,应用到M

一个关于取字符串中数字和字符的逻辑问题

代码如下 string a = "长花asdsad1236李代5415老花1213"; int j = 0; int k = 0; bool id = true; for (int i = 0; i < a.Length;i++ ) { if (a[i] >= '0' && a[i] <= '9') { if (id) { k = i; id = false; } if (i < a.Length - 1) { if (a[i + 1] >

JS当前日期相加相减

function DateAddORSub(interval,type,number) { /* * 功能:实现Script的Date加减功能. * 参数:interval,字符串表达式,表示要添加的时间间隔. * 参数:number,数值表达式,表示要添加的时间间隔的个数. * 参数:type,加减类型. * 返回:新的时间对象. * var newDate =DateAddORSub("d","+",5); */ var date = new Date(); s

密码等级:至少包含字母、大小写数字、字符中的两种 JS实现方案

前言 密码,如果设置的太简单,很容易就被攻破,所以很多网站将密码设置的要求设置的挺严格,一般是字母.数字.字符3选2,区分大小写.对于设置得太简单的密码,予以错误提示.或者予以密码等级(低中高)显示,让用户设置高级密码.那如何利用JS实现呢? 代码 链接:https://gist.github.com/xuanfeng/a44f20cb4569d5b4cd5e 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

js实现队列的操作以及对队列中数字的冒泡排序的可视化

一.理论基础 (1)封装一个对队列操作的构造函数,可以进行进队列,出队列,获得队列长度,返回该队列的数组形式. (2)使用正则表达式对input框中的输入字符进行验证,并获得有效的值 (3)使用setInterval()定时器实现可视化的冒泡排序过程,(因为js中没有sleep()函数),使用两个嵌套if语句控制排序过程,外部if语句表示执行次数,内部if语句进行相邻两个数的比较,每两个相邻数字,通过比较,交换完之后,绘制一次图形,j++,然后通过定时器继续执行函数,当一次的相邻数字比较完之后,