De acordo com este
? = é:
You can use the "?=" operator to achieve a "softer" assignment for a variable. This type of assignment allows you to define a variable if it is undefined when the statement is parsed, but to leave the value alone if the variable has a value. Here is an example:
A ?= "aval"
If A is set at the time this statement is parsed, the variable retains its value. However, if A is not set, the variable is set to "aval".
?? = é:
It is possible to use a "weaker" assignment than in the previous section by using the "??=" operator. This assignment behaves identical to "?=" except that the assignment is made at the end of the parsing process rather than immediately. Consequently, when multiple "??=" assignments exist, the last one is used. Also, any "=" or "?=" assignment will override the value set with "??=". Here is an example:
A ??= "somevalue"
A ??= "someothervalue"
If A is set before the above statements are parsed, the variable retains its value. If A is not set, the variable is set to "someothervalue".
Again, this assignment is a "lazy" or "weak" assignment because it does not occur until the end of the parsing process.