Javascript 无法获取属性';更换';未定义引用或空引用?

Javascript 无法获取属性';更换';未定义引用或空引用?,javascript,jquery,json,date,Javascript,Jquery,Json,Date,此代码引发错误: 无法获取未定义或空引用的属性“replace” function formatDate(dateVal) { var date = new Date(parseInt(dateVal.replace('/Date(', ''))) var month = date.getMonth() + 1; var day = date.getDate(); var year = date.getFullYear();

此代码引发错误: 无法获取未定义或空引用的属性“replace”

 function formatDate(dateVal) {

        var date = new Date(parseInt(dateVal.replace('/Date(', '')))
        var month = date.getMonth() + 1;
        var day = date.getDate();
        var year = date.getFullYear();
        return (day.toString().length > 1 ? day : "0" + day) + "/" + (month.toString().length > 1 ? month : "0" + month) + "/" + year;
    }

传递给它的值为null,格式类似于/Date(-62135596800000)/。

如果传递的是
null
值,则它没有任何属性。确保传递了正确的值:

函数formatDate(dateVal){
变量日期=新日期(parseInt(dateVal.replace('/date(',''))
var month=date.getMonth()+1;
var day=date.getDate();
var year=date.getFullYear();
返回(day.toString().长度>1?天:“0”+天)+“/”+(month.toString().长度>1?月:“0”+月)+“/”+年;
}

console.log(formatDate(“/Date(-62135596800000)/”);
如果传递的是
null
值,则该值没有任何属性。请确保传递的值正确:

函数formatDate(dateVal){
变量日期=新日期(parseInt(dateVal.replace('/date(',''))
var month=date.getMonth()+1;
var day=date.getDate();
var year=date.getFullYear();
返回(day.toString().长度>1?天:“0”+天)+“/”+(month.toString().长度>1?月:“0”+月)+“/”+年;
}

console.log(formatDate(“/Date(-62135596800000)/”);
使用默认参数,如formatDate(dateVal=”“),如果未传递值或未传递定义值,则允许您为函数参数设置默认值:

function formatDate(dateVal = "" ) {
  var date = new Date(parseInt(dateVal.replace('/Date(', '')))
  var month = date.getMonth() + 1;
  var day = date.getDate();
  var year = date.getFullYear();
  return (day.toString().length > 1 ? day : "0" + day) + "/" + (month.toString().length > 1 ? month : "0" + month) + "/" + year;
}

使用默认参数,如formatDate(dateVal=“”),它允许您在未传递值或未传递定义值的情况下为函数参数设置默认值:

function formatDate(dateVal = "" ) {
  var date = new Date(parseInt(dateVal.replace('/Date(', '')))
  var month = date.getMonth() + 1;
  var day = date.getDate();
  var year = date.getFullYear();
  return (day.toString().length > 1 ? day : "0" + day) + "/" + (month.toString().length > 1 ? month : "0" + month) + "/" + year;
}

您的问题似乎是您期望的字符串是“/Date(-62135596800000)/”但得到的是其他字符串。因此,请在调用字符串方法对其进行分析之前验证输入,例如

函数formatDate(dateVal){
//测试所需格式的字符串
如果(!/^\/Date\([+-]?\d{1,16}\)\/$/.test(dateVal)){
return;//未定义
}
let date=新日期(parseInt(dateVal.replace('/date(',''))
let month=date.getMonth()+1;
let day=date.getDate();
让年份=('000'+date.getFullYear()).slice(-4);
返回(天>9?天:“0”+天)+“/”+
(月份>9?月份:“0”+月份)+“/”+
年份;
}
//简单测试
['/日期(-62135596800000)/,
无效的
楠,,
“甜”,
1561853541934,
“/日期(1561853541934)/”】。forEach(
v=>console.log(v+':'+格式日期(v))

);
您的问题似乎是您期望的字符串类似于“/Date(-62135596800000)”,但得到的是其他内容。因此,请在调用字符串方法对其进行分析之前验证输入,例如

函数formatDate(dateVal){
//测试所需格式的字符串
如果(!/^\/Date\([+-]?\d{1,16}\)\/$/.test(dateVal)){
return;//未定义
}
let date=新日期(parseInt(dateVal.replace('/date(',''))
let month=date.getMonth()+1;
let day=date.getDate();
让年份=('000'+date.getFullYear()).slice(-4);
返回(天>9?天:“0”+天)+“/”+
(月份>9?月份:“0”+月份)+“/”+
年份;
}
//简单测试
['/日期(-62135596800000)/,
无效的
楠,,
“甜”,
1561853541934,
“/日期(1561853541934)/”】。forEach(
v=>console.log(v+':'+格式日期(v))

)
是的,可以,但是如果数据库中的值被传递为null,即没有值..到格式化函数,该怎么办呢?如何处理而不失败?您的意思是设置
/Date(-62135596800000)/
作为默认值@Stacky?我的意思是如何处理null条件?如果值传递为未定义?如果未定义,则使用默认参数
函数formatDate(dateVal=“/Date(-62135596800000)/”{…}
。如果为null,则使用逻辑OR运算符
dateVal=dateVal | |“/Date(-62135596800000)/”
@JackBashford如果要成为一个通用函数,可能需要做更多的工作,因为可能存在值是真实的但不是字符串的情况。-)是的,好的,但是如果数据库中的值被传递为null,即没有值..到format函数,该怎么处理而不失败呢?你的意思是设置
/Date(-62135596800000)/
作为默认值@Stacky?我的意思是如何处理null条件?如果值传递为未定义?如果未定义,则使用默认参数
函数formatDate(dateVal=“/Date(-62135596800000)/”{…}
。如果为null,则使用逻辑OR运算符
dateVal=dateVal | |“/Date(-62135596800000)/”;
@JackBashford如果要成为一个通用函数,可能需要做更多的工作,因为在某些情况下,值可能是真实的,但不是字符串重放前检查值是否为null检查传递的值的类型,如果不是字符串,则在尝试调用字符串方法之前处理它。重放前检查值是否为null检查传递的值的类型,如果不是字符串,则在尝试调用字符串方法之前处理它。设置默认值不正确解决传递的值类型错误的情况。如果需要特定类型(在本例中为字符串),则最好验证该值。设置默认值无法解决传递的值类型错误的情况。如果需要特定类型(在本例中为字符串),则验证该值更好。