这两种语法`${variableName}`和
{variableName}
是相同的吗?{variableName}
是相同的吗?首先是JavaScript的模板字面量
根据问题标签,我猜测上下文是关于React js的。因此第二个是用于在JSX中编写JavaScript的。
例如,如果你想要在JSX中循环一个数组,可以这样做:
<div>
{arr.map(item => <p>{item}</p>)}
</div>
但是模板字面量是纯JavaScript的功能。
模板字面量是字符串文字,允许嵌入表达式。您可以使用多行字符串和字符串插值功能。
let name = "Rashid";
let age = 20;
console.log(`My Name is ${name} and i'm ${age} years old`);
第二种方法是在React中使用JavaScript变量的JSX,这是JavaScript和HTML混合使用的一种方式。
例如
import "./styles.css";
let name = "Rashid";
let age = 22;
export default function App() {
return (
<div className="App">
<h1>Hello {name}</h1>
<h2>I think you are {age} years old.</h2>
</div>
);
}
let var1 = 15;
let var2 = {prop: true};
let var3 = 'text';
console.log(`${var1} ${var2} ${var3}`);
输出字符串:15 [object Object] text
以及以下内容:
let var1 = {prop: true};
let {prop} = var1;
let var2 = {var1};
console.log(var1)
console.log(prop)
console.log(var2)
将产生以下输出:
{ prop: true }
true
{ var1: { prop: true } }
由于前三个语句相等,因此可以简化为:
let var1 = {prop: true};
let prop = var1.prop;
let var2 = {var1: var1};
import ReactDOMServer from 'react-dom/server';
let var1 = "A string"
let var2 = 34
console.log(
ReactDOMServer.renderToStaticMarkup(
<ul>
<li>{var1}</li>
<li>{var2}</li>
</ul>
)
);
将Babel将会转换为:
"use strict";
var _server = _interopRequireDefault(require("react-dom/server"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var var1 = "A string";
var var2 = 34;
console.log(_server.default.renderToStaticMarkup( /*#__PURE__*/React.createElement("ul", null, /*#__PURE__*/React.createElement("li", null, var1), /*#__PURE__*/React.createElement("li", null, var2))));
并且,当运行时,将输出:
<ul>
<li>A string</li>
<li>34</li>
</ul>
`{variableName}`
console.log(`{variableName}`);
您的输出将是:
{variableName}
${variableName}
在拼接字符串时使用:
let my_name = 'abc';
console.log(`my name is ${yourname}. Bye`)
console.log('my name is ' + yourname + '. Bye')