关于从负数变回正数

关于从负数变回正数

function sign(n){
	if(n.indexOf("-")==-1){
		n="-"+n;
	}else{
		n=n.substr(1,n.length)
	}
	return n;
}

请问老师,视频中的这一段代码,当原先是负数的时候,n.length是包括符号的长度吧?所以截取的时候不是应该n=n.substr(1,n.length-1)吗?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

你好同学,如下图所示,如果是负数会进行判断,下图标记的代码就是判断n是否为负数,所以else语句触发的时候,n则为正数,所以这里不用写成n=n.substr(1,n.length-1),祝学习愉快~

http://img1.sycdn.imooc.com//climg/5c99f6130001ba7302470127.jpg

  • 菜得不行 提问者 #1
    标记中的语句是if(n.indexOf("-")==-1)也就是正数执行if语句在数据前面加负号,负数执行else语句把负号截取掉才对吧?所以执行else语句的时候n.length不是应该包括了负号在内的长度吗?
    2019-03-27 13:51:45
  • chrismorgen 回复 提问者 菜得不行 #2
    是的同学,else语句截取的负数,这里的n是一个字符串,比如-123,这里负号的索引是0,所以其实位置是1,长度是n.length,这里的n通过截取之后,就是123了,n.lenthg是包含负号在内的长度,不过起始位置是1了,那么-就不会被截取并赋值给n了,祝学习愉快~
    2019-03-27 17:31:34
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师