Understanding Const expression in VBScript

2019-02-17 01:05发布

问题:

Well, I try to understand limitations in Const expressions in VBScript. I was not able to use anything except literals. What the docs say is:

Literal or other constant, or any combination that includes all arithmetic or logical operators except Is.

So, if "that includes all arithmetic or logical operators" then logically I expect I can do something like this:

Const X = (1 + 2)

But that brings the error "Expected literal constant". I found an interesting answer here that allows one to cheat, at some level, so the above can be done with:

Execute "Const X = " & (1 + 2)

But my question is about standard constant declaration. If by chance the docs said something like "expression could be ONLY literal", then I would never ask.
So what Else I can use (besides literal)?

回答1:

Script56.chm says the following in the Remarks section:

Constants are public by default. Within procedures, constants are always private; their visibility can't be changed. Within a script, the default visibility of a script-level constant can be changed using the Private keyword.

To combine several constant declarations on the same line, separate each constant assignment with a comma. When constant declarations are combined in this way, the Public or Private keyword, if used, applies to all of them.

You can't use variables, user-defined functions, or intrinsic VBScript functions (such as Chr) in constant declarations. By definition, they can't be constants. You also can't create a constant from any expression that involves an operator, that is, only simple constants are allowed. Constants declared in a Sub or Function procedure are local to that procedure. A constant declared outside a procedure is defined throughout the script in which it is declared. You can use constants anywhere you can use an expression.

The bit in italics above makes a nonsense of the "or any combination that includes all arithmetic or logical operators except Is" claim.