实现一个函数,判断输入是不是回文字符串。

脱坑日记之js基础(ECMA262)

前言

虽然我是一个还没入门的小菜鸟,但我想做一个好前端。

写这个就是为了更好得学习更快得成长,早点脱坑,emmmm。

大致就是每篇解决一个我正在学习内容中问题,梳理知识点。

由于水平有限,难免有误,欢迎指正。

本期问题

实现一个函数,判断输入是不是回文字符串。

分析
  • 用函数 function+if语句
  • 判断是否是字符串 运用运算符 typeof
  • 判断是否回文 用string方法和对象方法 ,先用split方法拆开字符串,再用对象方法reverse颠倒顺序,最后再用对象方法join把字符串整合

知识点

一、变量类型和计算

值类型和引用类型
  1. ECMAScript中有5中简单数据类型,Undefined,Null,Boolean,Number和String,还有一种复杂类型Object。
  2. 值类型存储在栈(stack)中,是简单的数据段,和变量重叠(变量在栈中仅仅是一个保存值的占位符),也就是说在变量被访问的位置。
  3. 引用类型被存储在堆(heap)中,堆是内存中的动态区域,相当于自留空间,在程序运行期间会动态分配给代码和堆栈。
  4. 值类型相等时每次都是创建一个新的数据段,引用类型相等时指向的是同一个数据块。
var a={name:"小明"}
var b=a
b.name="小红"
console.log(a.name) //小红
复制代码
typeof运算符
typeof undefined //undefined
typeof 'abc' //string
typeof  1 // number
typeof  false //boolean
typeof  null //object
typeof  {} //object
typeof  [] //object
typeof  console.log //object
复制代码
  1. 从上面的代码可以发现,type只能详细区分值类型,而不能详细区分引用类型。
  2. 而null也是值类型,但从逻辑的角度看这是一个空对象指针。
变量计算中==和===
100='100'//true
0=''//true
null=undefined//true
复制代码

== 是不严格相等,===是严格等于。双等会出现隐式的类型转换,所以一定要慎用。仅仅当出现下面情况时可以使用

if(obj.a==null){
    此时的obj.a==null 相当于  obj.a ===null||obj.a===undefined的简写形式
}
复制代码

二、split、join、reverse

join
  1. 定义:join() 方法用于把数组中的所有元素放入一个字符串。 元素通过指定的分隔符进行分隔。
  2. 可选参数1,用来制定分隔符。如果省略该参数,则使用逗号作为分隔符。
var arr=["M","a","r","c","u","s"]
arr.join("--")//M--a--r--c--u--s
复制代码
split
  1. 定义:split() 方法用于把一个字符串分割成字符串数组。
  2. 必须参数1,字符串或正则表达式,从该参数指定的地方分割。 可选参数2,该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。
var str="How are you doing today?"

document.write(str.split(" ") + "<br />")//How,are,you,doing,today?
//如果把空字符串 ("") 用作 separator,那么 stringObject 中的每个字符之间都会被分割。
document.write(str.split("") + "<br />")//H,o,w, ,a,r,e, ,y,o,u, ,d,o,i,n,g, ,t,o,d,a,y,?
//如果把空字符串 (" ") 用作 separator,那么 stringObject 会被拆成单词。
document.write(str.split(" ",3))//How,are,you

复制代码
reverse
  1. 定义:reverse用于颠倒数组中的顺序
var a=["1","2","3"]
a.reverse()// ["3", "2", "1"]
复制代码
  1. 该方法会改变原来的数组,而不会创建新的数组。

答案


function run (input){
    if(typeof input!==="string"){
        return false
    }
    else{
        if (input.split('').reverse().join('')===input){
            return true
        }
    }
}
复制代码

if语句就一句话的时候可以省略方法体,另外else同理,结果直接用return返回结果。

function run(input) {
  if (typeof input !== 'string') return false;
  return input.split('').reverse().join('') === input;
}
复制代码
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值