背景(问题)

web前端考试有这么一道题目(为了阅读方便和应文章的景,小编将题目进行了微调)

<input type="number" value="1" id="a">
<input type="number" value="1" id="b">
<input type="number" value="1" id="c">
<button onclick="add()">会弹出什么呢?</button>
function add() {
var a = document.getElementById("a").value;
var b = parseInt(document.getElementById("b").value);
var c = parseInt(document.getElementById("c").value);
alert(a + b + c);
}

Q:当我们点击按钮时,弹出的提示框的内容是什么?

过程&结论

解题思路(false)

因为input的value值为String型,即字符串类型

因此a的类型为String型

b,c 被parse方法给转换成Number型

因此先计算b + c = 2,再将a和2进行拼接

最后得出结果为12

题目上的代码运行结果

提示框的内容为:111

结论

当js的输出中有String型时,所有的“+”起到拼接运算的作用

好,本期结束个der

怎么可能这么简单潦草地结束呢?肯定还得有实验来证明这些结论吧

实验

老演员全部上阵,再加一位str变量,值为“a”

先把不变的HTML部分展示出来:

<input type="number" value="1" id="a">
<input type="number" value="1" id="b">
<input type="number" value="1" id="c">
<button onclick="add()">会弹出什么呢?</button>

第一次实验

function add() {
var a = parseInt(document.getElementById("a").value);
var b = parseInt(document.getElementById("b").value);
var c = parseInt(document.getElementById("c").value);
var str = "a";
alert(str + a + b + c);
}

第一次实验运行结果

提示框内容:a111

第二次实验

function add() {
var a = parseInt(document.getElementById("a").value);
var b = parseInt(document.getElementById("b").value);
var c = parseInt(document.getElementById("c").value);
var str = "a";
alert(a + str + b + c);
}

第二次实验运行结果

提示框内容:1a11

第三次实验

function add() {
var a = parseInt(document.getElementById("a").value);
var b = parseInt(document.getElementById("b").value);
var c = parseInt(document.getElementById("c").value);
var str = "a";
alert(a + b + str + c);
}

第三次实验运行结果

提示框内容:2a1

第四次实验

function add() {
var a = parseInt(document.getElementById("a").value);
var b = parseInt(document.getElementById("b").value);
var c = parseInt(document.getElementById("c").value);
var str = "a";
alert(a + b + c + str);
}

第三次实验运行结果

提示框内容:3a

最终结论

当JS输出的内容中包含字符串,那么字符串后面的“+”全都起拼接作用

证明

alert(1 + 1 + 1 + 1 + 1 + "a" + 1 + 1 + 1 + 1 + 1);

运行结果:5a11111

浅谈JS输出中的“+”作用问题的更多相关文章

  1. 浅谈js数组中的length属性

    前言 一位正在学习前端的菜鸟,虽菜,但还未放弃. 内容 首先,我们都知道每个数组都有一个length属性 这个length属性一般我们用来循环遍历的约束,一般我们都会把他认为是该数组里面有几个元素这个 ...

  2. 浅谈JS中的闭包

    浅谈JS中的闭包 在介绍闭包之前,我先介绍点JS的基础知识,下面的基础知识会充分的帮助你理解闭包.那么接下来先看下变量的作用域. 变量的作用域 变量共有两种,一种为全局变量,一种为局部变量.那么全局变 ...

  3. 浅谈JS中的!=、== 、!==、===的用法和区别 JS中Null与Undefined的区别 读取XML文件 获取路径的方式 C#中Cookie,Session,Application的用法与区别? c#反射 抽象工厂

    浅谈JS中的!=.== .!==.===的用法和区别   var num = 1;     var str = '1';     var test = 1;     test == num  //tr ...

  4. 浅谈JS中 var let const 变量声明

    浅谈JS中 var let const 变量声明 用var来声明变量会出现的问题: 1. 允许重复的变量声明:导致数据被覆盖 2. 变量提升:怪异的数据访问.闭包问题 3. 全局变量挂载到全局对象:全 ...

  5. 浅谈 js 字符串之神奇的转义

    原文:浅谈 js 字符串之神奇的转义 字符串在js里是非常常用的,但是你真的了解它么?翻阅<MDN String>就可以了解它的常见用法了,开门见山的就让你了解了字符串是怎么回事. 'st ...

  6. 浅谈 js 字符串 search 方法

    原文:浅谈 js 字符串 search 方法 这是一个很久以前的事情了,好像是安心兄弟在学习js的时候做的练习.具体记不清了,今天就来简单分析下 search 究竟是什么用的. 从字面意思理解,一个是 ...

  7. 浅谈JS严格模式

    浅谈JS严格模式 简介 何为严格模式?严格模式(strict mode)即在严格的条件下运行,在严格模式下,很多正常情况下不会报错的问题语句,将会报错并阻止运行. 但是,严格模式可以显著提高代码的健壮 ...

  8. 浅谈人脸识别中的loss 损失函数

    浅谈人脸识别中的loss 损失函数 2019-04-17 17:57:33 liguiyuan112 阅读数 641更多 分类专栏: AI 人脸识别   版权声明:本文为博主原创文章,遵循CC 4.0 ...

  9. 浅谈JS之AJAX

    0x00:什么是Ajax? Ajax是Asynchronous Javascript And Xml 的缩写(异步javascript及xml),Ajax是使用javascript在浏览器后台操作HT ...

  10. 转: 浅谈C/C++中的指针和数组(二)

    转自:http://www.cnblogs.com/dolphin0520/archive/2011/11/09/2242419.html 浅谈C/C++中的指针和数组(二) 前面已经讨论了指针和数组 ...

随机推荐

  1. 2021昆明B

    容斥 + 矩形面积并 + 状压dp B-Blocks_第46届ICPC亚洲区域赛(昆明)(正式赛) (nowcoder.com) 题意 给出一个矩形A \((0,0),(W,H)\), 给出 \(n\ ...

  2. vue中vue2-google-maps使用谷歌地图的基础操作

    小哥我最近使用谷歌地图做了一个项目,于是乎各种坑就扑面而来,未免下次接着踩坑特留下自己的爬坑记录. 首先我是没用过谷歌地图也不知道靠谱不靠谱,于是乎傻傻的入坑了, 1.首先你要是没有vpn(或者fq工 ...

  3. 关闭Mac的Microsoft AutoUpdate弹框提示

    macOS安装Microsoft Office for Mac之后,有时候会弹出Microsoft Auto Update微软应用自动更新工具.就像下面这样:(我不知道您会不会烦,我是烦了)如果您也和 ...

  4. 【Frida】Java反射调用

    通过反射调用,获取类名 参数Object obj 类名 String str 方法名 static Object a(Object obj, String str) { try { return ob ...

  5. dropbear 2019.78 Installing to target......Running build_buildroot failed!

    使能buildroot的环境变量 source envsetup.sh ;rv1126一般选择90make dropbear-dircleanmake dropbear./build.sh rootf ...

  6. 关于oracle中scott用户恢复到初始状态的步骤,和一些问题解决方法。

    一般恢复步骤: sqlplus 连接到sys用户sqlplus / as sysdba运行脚本进行初始恢复start ?/rdbms/admin/utlsampl.sql;恢复后,用户为锁定状态,需要 ...

  7. Java设计模式——装饰器模式(Decorator)

    今天上课讲了java设计模式中的装饰器模式--Decorator,由于早上起的很早,肚子也很饿,知识点本身也晦涩难懂,听的云里雾里的,所以在课下对这块的知识做出一些总结. 定义 装饰器模式又名包装(W ...

  8. shell 脚本请求接口报错

    2023-01-18 22:07:07.984 WARN 11700 --- [io-9044-exec-10] .w.s.m.s.DefaultHandlerExceptionResolver : ...

  9. QSS学习

    padding:内边距 margin:外边距用法

  10. 「SOL」网络流flow (模拟赛)

    题面 给定一张分层有向图,有 \(n\) 层,每层有 \(m\) 个点.只有从第 \(i\) 层的点连向第 \(i + 1\) 层的点的连边. 记 \(A(i,j)\) 表示从第 \(i\) 层的某些 ...