woocommerce/packages/js/expression-evaluation/zh-cn
2026-04-15 10:18:01 +08:00
..
CHANGELOG.md docs: add 895 translated files 2026-04-15 10:18:01 +08:00
README.md docs: add 895 translated files 2026-04-15 10:18:01 +08:00

@woocommerce/expression-evaluation

在可选上下文中评估类 JavaScript 表达式。

简单表达式的例子:

1 + 2
foo === 'bar'
foo ? 'bar' : 'baz'

复杂表达式的例子:

foo.bar.baz === 'qux'
foo.bar
  && ( foo.bar.baz === 'qux' || foo.baz === 'quux' )
foo.bar
	&& ( foo.baz === "qux" || foo.baz === "quux" )
	&& ( foo.quux > 1 && foo.quux <= 5 )
foo.bar
	  && ( foo.baz === "qux" || foo.baz === "quux" )
	  && ( foo.quux > 1 && foo.quux <= 5 )
	? "boo"
	: "baa"
foo
  + 5
  /* 这是一个注释 */
  * ( bar ? baz : qux )

API

evaluate

在可选上下文中评估一个表达式。

用法

import { evaluate } from '@woocommerce/expression-evaluation';

const result = evaluate( '1 + foo', { foo: 2 } );

console.log( result ); // 3

参数

  • expression string: 要计算的表达式。
  • context Object: 可选。计算表达式时所在的上下文。表达式中的变量将在此对象中查找。

返回值

  • any: 表达式求值的结果。

表达式语法

语法和类型

表达式语法基于 JavaScript。形式化语法定义于 parser.ts

一个表达式由单个语句组成。

不支持 if 语句、for 循环、函数调用和变量赋值等产品特点。

支持以下类型:

  • null
  • 布尔值:truefalse
  • 数值:整数或浮点数。
  • 字符串:表示文本的字符序列。

字面量

表达式中的价值可以写作字面量。

null

null

布尔值

true
false

数值

1
5.23
-9

字符串

字符串字面量可以用单引号或双引号书写。如果字符串包含单引号或双引号,这会很有帮助。

'foo'
"foo"
'foo "bar"'
"foo 'bar'"

引号可以用反斜杠转义。

'foo \'bar\''
"foo \"bar\""

上下文变量

变量可在表达式中使用。变量的值会在上下文中查找。

const result = evaluate( 'foo', { foo: 1 } );

console.log( result ); // 1

嵌套属性可通过点运算符访问。

const result = evaluate( 'foo.bar', { foo: { bar: 1 } } );

console.log( result ); // 1

运算符

支持以下运算符。

比较运算符

相等 (==)

如果操作数相等则返回 true

1 == 1
不相等 (!=)

如果操作数不相等则返回 true

1 != 2
严格相等 (===)

如果操作数相等且类型相同,则返回 true

1 === 1
严格不相等 (!==)

如果操作数不相等和/或类型不同,则返回 true

1 !== "1"
大于 (>)

如果左操作数大于右操作数,则返回 true

2 > 1
大于或等于 (>=)

如果左操作数大于或等于右操作数,则返回 true

2 >= 2
小于 (<)

如果左操作数小于右操作数,则返回 true

1 < 2
小于或等于 (<=)

如果左操作数小于或等于右操作数,则返回 true

2 <= 2

算术运算符

加法 (+)

返回两个操作数的和。

1 + 2
减法 (-)

返回二个操作数的差。

2 - 1
乘法 (*)

返回二个操作数的积。

2 * 3
除法 (/)

返回两个操作数的商。

6 / 2
取模 (%)

返回两个操作数的余数。

5 % 2
取反运算符 (-)

返回操作数的负值。

-1

逻辑运算符

逻辑与 (&&)

如果两个操作数都为 true,则返回 true

true && true
逻辑或 (||)

如果任一操作数为 true,则返回 true

true || false
逻辑非 (!)

如果操作数为 false 则返回 true

!false

条件(三元)运算符

如果条件为 true 则返回第一个值,否则返回第二个值。

true ? 1 : 2

评论

评论可用于记录表达式。评论被视为空格,解析器会忽略它们。

/* This is a comment */