【问题标题】:Print parameter value in return scope在返回范围内打印参数值
【发布时间】:2019-05-20 11:39:52
【问题描述】:

我有一个带有数据参数的createTool函数,它返回的对象有很多字段,我想在返回数据中打印参数,但总是不打印任何东西,如何在返回范围内打印数据参数?

createTool(data){          
    console.log(data);  //print data value correctly 
    return {
        id: 'sidebar',
        label: 'SideBar',
        content: {
            tagName: 'div',
            components: [
              {
                script: 
                `console.log(`+ data + `);\n`  //print no thing
              }
            ]
          }
    }
}

【问题讨论】:

  • 你是evalscript吗?如果data 是一个字符串,请将其放在引号中,否则您可能会使用SyntaxError(或者,更好的是,完全避免使用eval
  • 你为什么要使用这样的字符串文字?

标签: javascript jquery typescript scope return-value


【解决方案1】:

我不确定我是否理解你想要做的事情,但这里有一个尝试:

function createTool(data){          
  return {
    id: 'sidebar',
    label: 'SideBar',
    content: {
      tagName: 'div',
      components: [
        {
          script: () => { console.log(data); }
        }
      ]
    }
  }
}

const test = createTool('Hello, world!');

test.content.components[0].script();

如果您绝对想将函数作为字符串返回(真的不是一个好主意),请按以下步骤操作:

function createTool(data){          
  return {
    id: 'sidebar',
    label: 'SideBar',
    content: {
      tagName: 'div',
      components: [
        {
          script: `console.log(${JSON.stringify(data)});\n`
        }
      ]
    }
  }
}

const test = createTool('Hello, world!');

eval(test.content.components[0].script);

【讨论】:

  • 我要返回字符串 'console.log('+ data + ');\n'
  • 为什么需要一个字符串化版本的脚本?
  • 我正在使用grapesjs创建网页,我想用JavaScript和html创建一个自定义工具,所以它应该导出为字符串,代码很大所以我只是复制请求代码。
  • 我不明白你的用例,但我更新了我的答案来处理它
猜你喜欢
  • 1970-01-01
  • 2020-06-20
  • 1970-01-01
  • 1970-01-01
  • 2021-07-05
  • 2022-07-05
  • 2011-07-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多