项目中多余的js写法之join和||连用

先看一段代码,框里面和框外面代码有区别吗?

也就是说直接给bookHtmlStr和checkHtmlStr赋值和经过一些无意义计算再赋值有什么区别,或者说有什么优劣吗?

首先我们看以上代码执行的结果截图,再分析原因。

也就是说,以上代码执行的最终结果为:

var bookHtmlStr = "<tr><td colspan=‘10‘>暂无数据!</td></tr>";
var checkHtmlStr = "<tr><td colspan=‘12‘>暂无数据!</td></tr>";

为什么最终结果是这样的呢?我们先看一下js中join的用法。例如:

var arr = new Array("1","2","3");
document.write(arr.join("."));
打印的结果为: 1.2.3 

在js中||和&&的用法如下:

a() && b() :如果执行a()后返回true,则执行b()并返回b的值;如果执行a()后返回false,则整个表达式返回a()的值,b()不执行;

a() || b() :如果执行a()后返回true,则整个表达式返回a()的值,b()不执行;如果执行a()后返回false,则执行b()并返回b()的值;

在js中,null、undefined、字符串空“”、数字0 转化boolean值时,都是为false。



知道以上的知识后,再看一下最开始的代码:

var bookHtmlArr = [];
var checkHtmlArr = [];
var bookHtmlStr = bookHtmlArr.join("")||"<tr><td colspan=‘10‘>暂无数据!</td></tr>";
var checkHtmlStr = checkHtmlArr.join("")||"<tr><td colspan=‘12‘>暂无数据!</td></tr>";

这样的代码导致bookHtmlArr.join(“”)一直都是false,最后的结果一直都会返回”暂无数据!“。所以估计这段代码应该是当初写的时候从其它地方copy过来改改的。以上代码的原意是:如果bookHtmlArr为空,就把“暂无数据”赋值bookHtmlStr ,如果bookHtmlArr有值,就把bookHtmlArr赋值给bookHtmlStr 。



反思:

知其人还有知其所以然。不管以后看别人代码还是自己写代码,都尽量做到不留多余代码在项目中。

时间: 2024-10-10 16:15:22

项目中多余的js写法之join和||连用的相关文章

在vue项目中使用canvas-nest.js,报parameter 1 is not of type &#39;Element&#39;

canvas-nest.js是一款轻量的网页特效,如图: github地址:https://github.com/hustcc/canvas-nest.js 在普通的html项目中,只要将<script src="dist/canvas-nest.js"></script>插入到body标签最下边即可. 在vue项目中,使用时配置 1 import CanvasNest from 'canvas-nest.js'; 2 3 const config = { //

百度地图在项目中的使用(JS)

废话先: 这个项目是使用ASP.NET MVC 写的,而关于百度地图在项目中的应用不限于ASP.NET MVC 因为我大部分的API的使用是通过Javascript,想在项目中使用百度地图,你得先成为百度的开发者,具体的步骤,在本篇博文中不多叙述. 主题: 在使用百度地图的时候,你得先要获得一个ak 这里就是点击创建应用,它提供了几个类别1.for server  2.for mobile 3.for browser,在这里呢,因为我们是通过一个for browser来了解百度地图,所以在创建应

Eclipse项目中加入jquery.js文件报错(missing semicolon)问题

在使用Eclipse3.7及以后的版本的时候,加入jQuery文件会报错(missing semicolon),文件中会显示红色小X,虽然这个错误并不会影响项目的运行,但是这个却会大大的影响到开发人员的心情,看这总是很不爽,怎么样才能解决呢. 很简单,首先我们先分析下造成这种情况的原因,如果你是个心细的人,去研究一下项目中的.project文件,你会发现有这样一段代码,如下:   节点下的这些代码,你会发现第一个有个org.eclipse.wst.jsdt.core.javascriptVali

项目中Service层的写法

截取自项目中的一个service实现类,记录一下: base类 1 package com.bupt.auth.service.base; 2 3 import javax.annotation.Resource; 4 5 import com.bupt.auth.dao.OauthClientDao; 6 import com.bupt.auth.dao.PermissionDao; 7 import com.bupt.auth.dao.ResourceDao; 8 import com.bu

在Maven+Spring项目中使用Node.js的Gulp进行前端自动化构建

刚开始打算进行前后端分离开发,后来发现在使用JSP或者Freemarker做动态页面时,想发挥这些自动化构建工具牛逼闪闪的livereload功能并不是那么的轻易,因为我们必须还得调教它们去调用Java容器.现在全球社区似乎还没有成熟的插件可以自动帮我们调教Java容器,百度Fis的Jello也只是做了一下velocity的自动化,自己写感觉就是自虐,所以在这个问题上倒不如把Gulp当成一个Maven来使用,反正J2EE开发人员应该大都习惯了修改代码之后漫长无尽的build.相反,如果对Gulp

项目中Android与Js交互

一.项目涉及的类: DetailCourseMainActivity,HtmlCountMainFragment,HtmlCountFragment,HtmlCountJSInterface,AnswerWebView 二.逐步分析: 1.MainActivity: 1)点击:打开页面 showFragment(HtmlCountMainFragment.class); 2)针对返回键的处理: onBackPressed(): 一般的:super.onBackPressed();return;对

vue项目中使用md5.js及base64.js

一.在项目根目录下安装 npm install --save js-base64 npm install --save js-md5 二.在项目文件中引入 import md5 from 'js-md5'; let Base64 = require('js-base64').Base64; 三.在项目文件中使用 base64 Base64.encode('dankogai'); // ZGFua29nYWk= Base64.encode('小飼弾'); // 5bCP6aO85by+ Base6

在web项目中集成pdf.js的默认查看器

pdf.jsMozilla开源的一项用于在HTML5平台上显示pdf文档的技术,Mozilla自己的Firefox浏览器也用了pdf.js来预览pdf,可见应该是一个比较成熟稳定的方案(btw,chrome用的是foxit的技术,国人骄傲啊).当然类似的方案有很多,并且大多都提供了丰富的api,如果你仔细读文档/api,可能会有好的收获,但是Mozilla同时把在Firefox内的查看器也一道开源了,对于大部分定制性不强,只需要浏览的使用场景来说,似乎可以直接"拿来主义",本文就说的是

项目中常用的JS操作技巧

1.<a>标签-超链接中confirm方法使用介绍 <a href="a.html" onclick="if(confirm('确定删除?')==false)return false;">删除</a> 2.<select>下拉框三级联动效果 1).html代码 <select name="select_element" id="firstServiceType">&l