账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    js中方法参数传值的问题
    36
    0

    此问题出现在我阅读别人的源码时,对于此处传值有些不解,不知道是不是vue的一个特性,问题如下:
    在全局注册了一个方法

    export function parseTime(time, cFormat) {
      console.log(time)
      if (arguments.length === 0) {
        return null
      }
    
      if ((time + '').length === 10) {
        time = +time * 1000
      }
    
      const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
      let date
      if (typeof time === 'object') {
        date = time
      } else {
        date = new Date(parseInt(time))
      }
      const formatObj = {
        y: date.getFullYear(),
        m: date.getMonth() + 1,
        d: date.getDate(),
        h: date.getHours(),
        i: date.getMinutes(),
        s: date.getSeconds(),
        a: date.getDay()
      }
      const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
        let value = formatObj[key]
        if (key === 'a') return ['一', '二', '三', '四', '五', '六', '日'][value - 1]
        if (result.length > 0 && value < 10) {
          value = '0' + value
        }
        return value || 0
      })
      return time_str
    }
    

    这时候在组件内进行这样的调用,直接传递了我认为是该方法的第二个参数--时间格式,那么time参数是怎么传递的呢?调用如下:

      <el-table-column width="180px" align="center" label="Date">
        <template slot-scope="scope">
          <span>{{scope.row.timestamp | parseTime('{y}-{m}-{d} {h}:{i}')}}</span>
        </template>
      </el-table-column>

    主要是不明白为什么没有传递parseTime()方法的time参数直接传递了cFormat参数,是什么原理呢?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 霹雳猫 普通会员 1楼

      在JavaScript中,方法参数传递值主要有两种方式:值传递和引用传递。

      1. 值传递:这种方式在函数内部进行值传递,参数的值会在函数内部复制一份,并且不会改变原始参数的值。例如: javascript function add(a, b) { return a + b; } var result = add(1, 2); // result的值是3,而a和b的值并未改变

      2. 引用传递:这种方式在函数外部进行引用传递,参数的值在函数外部是不改变的。例如: javascript function add(a, b) { return a + b; } var result = add(1, 2); // result的值是3

      在使用函数时,我们通常使用引用传递,这样可以避免因为参数的值改变而导致的结果改变。如果需要在函数内部进行值传递,我们可以使用值传递,但需要注意在函数内部复制一份参数的值。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部