背景(问题)

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

最新文章

  1. 20145220&amp;20145209&amp;20145309信息安全系统设计基础实验报告(4)
  2. Leetcode: Range Addition
  3. PB函数大全
  4. JS-页面操作
  5. RobotFramwork + Appium+ Andriod 环境搭建
  6. Overview Of Portal Registry And Content References
  7. [弹出消息] C#ShowMessageBox帮助类
  8. K - Candies(最短路+差分约束)
  9. ng1笔记
  10. javaScript设计模式之常用工厂模式
  11. KeepAlive随笔
  12. [ Java面试题 ] 框架篇
  13. Android 初次进入默认不弹出软键盘
  14. C++—模板(1)模板与函数模板
  15. Java集合框架面试题目
  16. eclipse总是自动跳到ThreadPoolExecutor解决办法
  17. Java中Map接口的遍历
  18. JVM介绍
  19. Ng第一课:引言(Introduction)
  20. 在Android上山寨了一个Ios9的LivePhotos,放Github上了

热门文章

  1. kingbase字符类数据类型和oracle字符类型的区别
  2. Epicor 助力F1车队Scuderia AlphaTauri 提升车队运营效率和性能
  3. mysql 数据库的一些参数,常用模版和调优方式
  4. mysql 百万计数据导入--Load data infile
  5. Deer_GF之UIButtonSuper
  6. 【Direct3D 12】配置编译环境
  7. element+Vue el-form组件进行查询时,当输入框仅有一项时,回车自动提交表单,浏览器会刷新页面
  8. PHP压缩二进制流转CSV文件
  9. MavenDependencies 报错缺少jar包
  10. Linux系统Shell脚本第五章:shell数组、正则表达式及文件三剑客之AWK