microsoft / microsoft/TypeScript

Using declarations like a statement leads to strange bugs.

オープン
#62,896 コメント 7 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

Bug Domain: check: Control Flow Help Wanted
主要言語
Go
スター
111k
フォーク
14.3k
平均マージ
2日 4時間
マージ済み PR(30日)
132

説明

### 🔎 Search Terms

function declaration statement

### 🕗 Version & Regression Information

v 5.9.3

### ⏯ Playground Link

https://www.typescriptlang.org/play/?target=99#code/JYMwBAFALgTgrgUwJRgG4EMZgB5gLxgAMA3ALABQAxgPYB2AztQDYIB0T1A5hNksWAHoB1ANYUKIalggsoYYPiL8FAHjABmZQGotKDFgBWi4GSp1GLdlwgGUQhDBhT5tMDQC2AB2AsAXGCNgejA4egQAEzAAIwRJGARohGBaTjB0enpgTloAGjBaajAHJyxksHhaKGB3BLA68XJQSFhEFBA4WkoqujAQCBQAbwBfCX6hAqLHZzKPbxYwKpq8qLg5YunXCsWEfwBJV3pYYC6wd2pwhJoLvPbO7oY3dFc6JgBPRLALyiZMCLS5KDUTxgFioBBMMAbTIXNLRDiUERgIA

### 💻 Code

```ts
if (true) var x = 0;
console.log(x); //ok

for (let i = 0; i < 3; i++) var j = i;
console.log(j) //error in compile: j is used before being assign, no error in runtime

if (true) function f() {}
f()//no error in compile time, but error in runtime: In strict mode code, functions can only be declared at top level or inside a block
```

### 🙁 Actual behavior

-

### 🙂 Expected behavior

-

### Additional information about the issue

The questions above was raised only in academic purpose. I understand that there are no real use cases to apply code above.

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

リンクされている TypeScript Playground から始め、issue にある 3 つの宣言例を再現して、コンパイラの診断と実行時の動作を比較します。issue では期待される結果が指定されていないため、関連するコンパイラ領域とテストを特定する前に、意図された修正が診断なのか、出力コードの変更なのか、それとも文書化された JavaScript のセマンティクスなのかを明らかにしてください。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
javascript, typescript
領域
compilers
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
25/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。