그것은 모든 변수가 동일한 전역 범위에 있기 때문에 복잡하지만, 각 선언 스크립트가 직접 스크립트 뒤에 때 값을 사용, 그것은 참으로 가능 :
<script type="text/javascript">
my_key = "1a";
my_time = new Date().getTime();
my_custom_params = {};
</script>
<script type="text/javascript">
(function(key, time, params) {
// scoped variables only available in here
// won't be overwritten by the following script
}(my_key, my_time, my_custom_params));
</script>
<script type="text/javascript">
// overwrites the variables
my_key = "2b";
my_time = new Date().getTime();
my_custom_params = {};
</script>
<script type="text/javascript">
{
const locals = {
key: my_key,
time: my_time,
params: my_custom_params
};
// locals.… available only in this scope
// the object won't be overwritten or mutated by following scripts
}
</script>
…
당신은 다음 번에 덮어 쓰기하기 전에 전역 변수를 평가하고, 어떤 안전한 장소에 그 값을 저장해야합니다.
물론, 여전히 끔찍한 습관입니다. 각 스크립트가 고유 한 네임 스페이스 (객체)를 만들고 그 값을 거기에 넣어야합니다.
FYI''type = "text/javascript"'는'script '엘리먼트와'/ * * /'는'script' 태그를 XML 구문 분석기에 전달하지 않는 한 제거 될 수 있습니다 (거의 없습니다). –
https://jsfiddle.net/bus2z1oj/ – guest271314
블록에 여러 개의 외부 js 파일이 있습니까? – Bergi