JS中判断字符串存在和非空的方法


Posted in Javascript onSeptember 12, 2018

看到这个题目你是怎么想的呢?这个很简单啊,typeof 一下,再判断length。

if(typeof unknownVariable ==='string' && unknownVariable.length){
   ...
 }

搞定了吗?

如果这个字符串是用new String() 创建的会如何呢?typeof 这个未知变量肯定是 object。你会怎么办?
你肯定还得先判断类型,typeof unknownVariable==='object' ?但你得想还有一个null变量的 typeof 值也是 object。那是不是还得 && unknownVariable 一下?现在就是一个非空对象了,接着要不要判断一下length?应该不用了。但最后 typeof 是 object 的不一定是字符串对象啊,可以是别的对象,如数组、json对象、new 出来的别的对象等等。要怎么办呢?

这就要上一个很少用到但有用的方法了:valueOf。valueOf 会以变量原始类型的形式进行输出。

let str1="test"
  let str2=new String('test2')
  let arr1=[1,2,3]
  let fn1=function(){
    console.log('this is a function')
  }
  let obj1={
    name:'gpd'
  }
  let obj2=new Object()
  obj2.name='gpd' 
  str1.valueOf() // "test"
  str2.valueOf() //"test2"
  arr1.valueOf() //[1,2,3]
  fn1.valueOf() //fn1(){}
  obj1.valueOf() // {name:"gpd"}
  obj2.valueOf() // {name:"gpd"}

所以,无论你是字符串字面量还是new String 得到的一个字符串对象,它的valueOf值都是一个字符串字面量。然后,它的typeof 值都是 string 。

所以最后的判断的是

if(typeof unknownVariable !=undefined 
  && unknownVariable 
  && typeof unknowVariable.valueOf() === "string")
  {
    ...
  }
Javascript 相关文章推荐
通过Jquery遍历Json的两种数据结构的实现代码
Jan 19 Javascript
jquery easyui combobox模糊过滤(示例代码)
Nov 30 Javascript
多种方法实现360浏览器下禁止自动填写用户名密码
Jun 16 Javascript
JavaScript中的类数组对象介绍
Dec 30 Javascript
jQuery 特性操作详解及实例代码
Sep 29 Javascript
JS类的定义与使用方法深入探索
Nov 26 Javascript
AngularJS创建一个上传照片的指令实例代码
Feb 24 Javascript
JavaScript实现星级评价效果
May 17 Javascript
微信小程序之数据绑定原理解析
Aug 14 Javascript
vue使用prop可以渲染但是打印台报错的解决方式
Nov 13 Javascript
js实现tab栏切换效果
Aug 02 Javascript
原生JS实现相邻月份日历
Oct 13 Javascript
React router动态加载组件之适配器模式的应用详解
Sep 12 #Javascript
微信小程序实现tab左右切换效果
Nov 15 #Javascript
微信小程序首页的分类功能和搜索功能的实现思路及代码详解
Sep 11 #Javascript
vue项目中使用tinymce编辑器的步骤详解
Sep 11 #Javascript
VUE 实现滚动监听 导航栏置顶的方法
Sep 11 #Javascript
vue中的watch监听数据变化及watch中各属性的详解
Sep 11 #Javascript
vue axios数据请求get、post方法及实例详解
Sep 11 #Javascript
You might like
推荐一款PHP+jQuery制作的列表分页的功能模块
2014/10/14 PHP
Nginx下配置codeigniter框架方法
2015/04/07 PHP
利用PHP判断是否是连乘数字串的方法示例
2017/07/03 PHP
php判断数组是否为空的实例方法
2020/05/10 PHP
JavaScript 获得选中文本内容的方法
2009/02/15 Javascript
jQuery获取文本节点之 text()/val()/html() 方法区别
2011/03/01 Javascript
分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]
2012/10/12 Javascript
基于jquery插件制作左右按钮与标题文字图片切换效果
2013/11/07 Javascript
js中settimeout方法加参数的使用实例
2014/02/27 Javascript
javascript使用输出语句实现网页特效代码
2015/08/06 Javascript
jQuery实现悬浮在右上角的网页客服效果代码
2015/10/24 Javascript
基于javascript实现浏览器滚动条快到底部时自动加载数据
2015/11/30 Javascript
jQuery position() 函数详解以及jQuery中position函数的应用
2015/12/14 Javascript
jQuery 常用代码集锦(必看篇)
2016/05/16 Javascript
JS简单去除数组中重复项的方法
2016/09/13 Javascript
Vue.js结合Ueditor富文本编辑器的实例代码
2017/07/11 Javascript
详解Vue2.x-directive的学习笔记
2017/07/17 Javascript
微信小程序开发之IOS和Android兼容的问题
2017/09/26 Javascript
jQuery进阶实践之利用最优雅的方式如何写ajax请求
2017/12/20 jQuery
详解Vue用cmd创建项目
2019/02/12 Javascript
简单学习5种处理Vue.js异常的方法
2019/06/17 Javascript
vue v-on:click传递动态参数的步骤
2020/09/11 Javascript
[44:40]KG vs LGD 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
go和python调用其它程序并得到程序输出
2014/02/10 Python
利用Python学习RabbitMQ消息队列
2015/11/30 Python
Python assert语句的简单使用示例
2019/07/28 Python
Python 读取有公式cell的结果内容实例方法
2020/02/17 Python
浅谈keras通过model.fit_generator训练模型(节省内存)
2020/06/17 Python
使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例
2020/12/11 Python
萨克斯第五大道的折扣店:Saks Fifth Avenue OFF 5TH
2016/08/25 全球购物
巴黎卡诗加拿大官网:Kérastase加拿大
2018/11/12 全球购物
Wiggle澳大利亚:自行车、跑步、游泳商店
2020/11/07 全球购物
组织鉴定材料
2014/06/02 职场文书
2015秋季开学典礼新闻稿
2015/07/17 职场文书
党员干部学习三严三实心得体会
2016/01/05 职场文书
2019企业文化管理制度范本!
2019/08/06 职场文书