js 赋值问题

qianzs
  • 231
function k(v){
    let s = '';
    if(v !== '') {
        s = v;
    } else {
        v = s;
    }
    
    console.log(s); // 第一次是2,之后都是空
    
    k('');

}
k(2);

如何才能之后输出的都是2

回复
阅读 1.4k
3 个回答
Infinity
  • 293
✓ 已被采纳
    {
      let s = '';  //放外面
      function k(v) {
        if (v !== '') {
          s = v;
        } else {
          v = s;
        }

        console.log(s); 

        k('');

      }
    }

    k(2);
李昊天
  • 1.8k
function k(v){
    let s = '';
    if(v !== '') {
        s = v;
    } else {
        v = s;
    }
    
    console.log(s); // 第一次是2,之后都是空
    
    k('');

}

k(2); 这里执行函数

执行到内部 v的值是2;s = '';
执行赋值: s = 2;
再执行函数 k('');
执行到内部 v的值是'' s的值也是 '';
执行赋值 v = s v和 s 都是 '';
死循环递归 v = s v和 s 都是 '';

let arr = [];

function k(v) {
    arr.push(v);
    let s = '';
    if (arr[0] !== '') {

        s = arr[0];
    } else {
        arr[0] = s;
    }

    console.log(s); // 第一次是2,之后都是空

    k('');

}
k(2);
宣传栏