2014-07-01 50 views
0

簡化,關於JavaScript的使用我的項目的結構如下:在使用它的每個文件中重新聲明一個變量?

base.html(項目的基本模板)

{% block js %}{% endblock %} 
<script type="application/javascript" src="/base.js"></script> 

child.html(模板,從base.html繼承)

{% block js %} 
    <script type="application/javascript"> 
     {# context_variable is a JSON string generated by handler #} 
     specialObj = {{ context_variable|safe }}; 
    </script> 
{% endblock %} 

base.js(項目主文稿)

function specialFn() { 
    // something is done with specialObj here... 
} 

if (specialObj) 
    specialFn(); 

問題是:爲便於閱讀(或其他某些原因),是否應該爲base.js重新聲明obj

+1

關於* type =「application/javascript」*,請參見[*爲什麼IE8不能在腳本標記中識別type =「application/javascript」?](http://stackoverflow.com/questions/1288263/爲什麼-犯規-IE8-識別型應用程序的JavaScript功能於一個腳本標籤)。只需將其刪除,默認值爲* text/javascript *,因此除非極少數情況下,在極其舊的IE版本(以及其他一些古老而隱蔽的瀏覽器)中,除非極少數情況下才需要type屬性。 – RobG

+0

如果您的意思是* specialObj *,則不會在任何地方聲明。取決於創建全球的任務並不是一個好策略。聲明它(即使用[* VariableStatement *](http://ecma-international.org/ecma-262/5.1/#sec-12.2))多次不是問題,只是不整潔。 – RobG

+0

@RobG(在「application/javascript」上):我明白了。謝謝。
(在「specialObj」上)爲什麼不整潔這些聲明(帶有VariableStatement)是否在不同的文件中重複? – Vleseg

回答

0

我假設你的意思是specialObj?您將其定義爲全局變量,因此它已經可用於base.js.無需重新聲明。

+0

嗯,對,我忘了'var'。但它不會改變任何事情,是嗎? – Vleseg

+0

你應該用'var'聲明它。無需在'base.js'中重新聲明 – GAEfan

相關問題