背景(问题)

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. odoo Web Controllers 学习总结

    环境 odoo-14.0.post20221212.tar Web Controllers Controllers 控制器需要提供可扩展性,就像Model,但不能使用相同的机制,因为先决条件(已加载模 ...

  2. 搭建CI环境和git使用

    部署Git+Gerrit+Jenkins 的CI环境 使用Git作为代码存储及版本控制 使用Jenkins进行自动化构建 构建测试通过后,再交给人工review 人工review通过后,自动同步到远程 ...

  3. ABAP SORT 递减/递增

    排序 DESCENDING(递减) / ASCENDING(递增)只作用前字段 SORT  LT_VBAK BY VBELN  DESCENDING(递减). SORT  LT_VBAK BY VBE ...

  4. for循环当中的 var let区别

    首先要了解这里代码执行顺序: for循环同步:setTimeout异步: js在执行代码的过程中,碰到同步代码会依次执行,碰到异步代码就会将其放入任务队列中进行等待,当同步代码执行完毕后再开始执行异步 ...

  5. DOM04~

    事件对象及属性 事件对象 事件流 事件委托 综合案例 事件对象 获取事件对象 事件对象常用属性 什么是事件对象? 1.1 也是个对象,这个对象里有事件触发时的相关信息 1.2 例如鼠标点击事件中,事件 ...

  6. 微信小程序tabBar不显示的问题

    刚刚入门 随便试吧了几个小功能.在用到tabBar时,在未出现代码错误的情况下,tabBar不显示 后来改了改发现是打开的首页并没有包含在tabBar列表里.

  7. python获取某一年的所有节假日

    注:chinese_calander库需要每年手动更新一次 import datetime import chinese_calendar def get_holidays(year=None, in ...

  8. mysql随机返回一条数据

    select * from biz_question ORDER BY RAND(id) LIMIT 1; SELECT * FROM biz_question AS t1 JOIN (SELECT ...

  9. WPF 入门教程DispatcherTimer计时器

    在 WinForms 中,有一个名为 Timer 的控件,它可以在给定的时间间隔内重复执行一个操作.WPF 也有这种可能性,但我们有DispatcherTimer控件,而不是不可见的控件.它几乎做同样 ...

  10. ANSI/Unicode字符串简单介绍

    1.1.wchar_t.char区别 ANSI:char,可以用strcat().strcpy().strlen()等str开头的函数处理char*字符串: UNICODE:wchar_t是Unico ...