### Version 3.2.4 ### Reproduction link [sfc-playground](https://sfc.vuejs.org/#eyJBcHAudnVlIjoiPHRlbXBsYXRlPlxuICA8ZGl2Pnt7YX19PC9kaXY+XG48L3RlbXBsYXRlPlxuXG5cblxuLy8gYnJva2VuXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50IH0gZnJvbSAndnVlJ1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIGNvbnNvbGUubG9nKDEyMylcbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7IFxuICBuYW1lOiAnQXBwJyxcbiAgZGF0YSgpe1xuICAgIHJldHVybiB7XG4gICAgICBhOiBcImFcIlxuICAgIH1cbiAgfVxufSk7PC9zY3JpcHQ+XG5cbi8vIGdvb2RcbjwhLS1zY3JpcHQgbGFuZz1cInRzXCI+XG4gIGNvbnNvbGUubG9nKDEyMylcbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7IFxuICBuYW1lOiAnQXBwJyxcbiAgZGF0YSgpe1xuICAgIHJldHVybiB7XG4gICAgICBhOiBcImFcIlxuICAgIH1cbiAgfVxufSk7XG48L3NjcmlwdD5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCB9IGZyb20gJ3Z1ZSdcbjwvc2NyaXB0LS0+XG5cblxuXG4vLyBnb29kXG48IS0tc2NyaXB0IHNldHVwPlxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50IH0gZnJvbSAndnVlJ1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQ+XG4gIGNvbnNvbGUubG9nKDEyMylcbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7IFxuICBuYW1lOiAnQXBwJyxcbiAgZGF0YSgpe1xuICAgIHJldHVybiB7XG4gICAgICBhOiBcImFcIlxuICAgIH1cbiAgfVxufSk7XG48L3NjcmlwdC0tPlxuXG5cbiJ9) ### Steps to reproduce 1. first `<script setup>` then `<script>` works 2. first `<script lang="ts>` then `<script setup lang="ts">` works 3. first `<script setup lang="ts">` then `<script lang="ts">` broken with error `Cannot access '__default__' before initialization` ### What is expected? works well without consider order ### What is actually happening? use `lang="ts"` and put the normal block below setup block has error <!-- generated by vue-issues. DO NOT REMOVE -->