12.3.3.5 If statements
For an if statement stmt of the form:
if (expr) then-stmt else else-stmt
?v has the same definite assignment state at the beginning of expr as at
the beginning of stmt.
?If v is definitely assigned at the end of expr, then it is definitely
assigned on the control flow transfer
to then-stmt and to either else-stmt or to the end-point of stmt if there
is no else clause.
?If v has the state .definitely assigned after true expression. at the end
of expr, then it is definitely
assigned on the control flow transfer to then-stmt, and not definitely
assigned on the control flow
transfer to either else-stmt or to the end-point of stmt if there is no
else clause.
?If v has the state .definitely assigned after false expression. at the
end of expr, then it is definitely
assigned on the control flow transfer to else-stmt, and not definitely
assigned on the control flow
transfer to then-stmt. It is definitely assigned at the end-point of stmt
if and only if it is definitely
assigned at the end-point of then-stmt.
?Otherwise, v is considered not definitely assigned on the control flow
transfer to either the then-stmt
or else-stmt, or to the end-point of stmt if there is no else clause.
For an if statement stmt of the form:
if (expr) then-stmt else else-stmt
?v has the same definite assignment state at the beginning of expr as at
the beginning of stmt.
?If v is definitely assigned at the end of expr, then it is definitely
assigned on the control flow transfer
to then-stmt and to either else-stmt or to the end-point of stmt if there
is no else clause.
?If v has the state .definitely assigned after true expression. at the end
of expr, then it is definitely
assigned on the control flow transfer to then-stmt, and not definitely
assigned on the control flow
transfer to either else-stmt or to the end-point of stmt if there is no
else clause.
?If v has the state .definitely assigned after false expression. at the
end of expr, then it is definitely
assigned on the control flow transfer to else-stmt, and not definitely
assigned on the control flow
transfer to then-stmt. It is definitely assigned at the end-point of stmt
if and only if it is definitely
assigned at the end-point of then-stmt.
?Otherwise, v is considered not definitely assigned on the control flow
transfer to either the then-stmt
or else-stmt, or to the end-point of stmt if there is no else clause.
博客围绕if语句展开,阐述了变量v在if语句不同部分的确定赋值状态。包括在表达式开始时的状态,表达式结束后不同情况(如确定赋值、特定表达式后确定赋值等)下,变量v在then - stmt、else - stmt及语句终点的赋值状态。
929

被折叠的 条评论
为什么被折叠?



