SOURCE

function safeGet(obj, props, defaultVal) {
  // 请在这里实现
  if(!obj){
    return defaultVal
  }
  if(typeof(obj[props]) !== 'undefined') {
    if(obj[props] === null){
      return defaultVal
    }
    return obj[props]
  }
  let propsArr = props.split('.')
  for(let i = 0,l = propsArr.length; i < l; i++){
    let k = propsArr[i]
    if(obj && typeof obj === 'object' && k in obj && (obj[k]) !== null) {
      obj = obj[k]
    }else {
      return defaultVal
    }
  }
  return obj
}

var deelyNestedObj = {
  a: {
    b: {
      c: {
        d: 123
      }
    }
  }
}
console.log(safeGet(deelyNestedObj, 'a.b.c.d', 'Alipay'))
console.log(safeGet(deelyNestedObj, ' a. b..c..d '))
console.log(safeGet(deelyNestedObj, 'a.b.c1.d'))
console.log(safeGet(deelyNestedObj, 'a.b.c1.d', 'Alipay'))
console.log(safeGet(deelyNestedObj, 'a.b.c.d.e.f.g.h'))
console 命令行工具 X clear

                    
>
console