2015-07-17 3 views
0

Я прочитал, что в CF вы всегда должны обладать переменными, потому что если вы не предоставите явную область, CF придется искать по областям, пока не найдет переменную. Это действительно так? Если это так, test2() будет более эффективным способом записи функции?Каковы плюсы и минусы для явного определения переменной внутри функции?

<cfscript> 
    function test() { 
     var result = 5; 
     result = 42; 
     return result; 
    } 

    function test2() { 
     var result = 5; 
     Local.result = 42; 
     return Local.result;  
    } 
</cfscript> 
+0

Должен ли я испечь шоколадный торт или ванильный торт. Что лучше? Умммм ... это не сайт мнения. Это сайт, на котором можно задавать вопросы, на которые можно ответить без учета мнения. –

+1

@EvikJames аргумент, который я читал, состоял в том, что если вы явно используете переменную, код будет более эффективен, поскольку CF не нужно будет искать по областям. Следовательно, вопрос имеет технический ответ, который не зависит от мнения. – Roland

+1

«Лучшая практика» - это всегда мнение. возможно, вы должны переформулировать вопрос, чтобы спросить, какой из них «самый быстрый», или какой из них использует наименьшую обработку, или какой ... я не знаю, некоторые другие критерии. –

ответ

1

(что я делаю) это переменная локальная переменная как структура содержит все мои необходимые переменные внутри функции, я модифицировал test2(), чтобы показать это. Мы делаем это для обеспечения обратной совместимости с CF8. Поскольку мы все еще имеем дело с серверами CF8 и CF9.

<cfscript> 
    function test() { 
     var result = 5; 
     result = 42; 
     return result; 
    } 

    function test2() { 
     var local = {}; 
     local.otherthing = 'hello'; 
     local.result = 5; 

     Local.result = 42; 
     return Local.result;  
    } 
</cfscript> 
4

С введением локальной области использования ключевое слово var просто сообщает CF, что vared stuff принадлежит к локальной области. Оба примера выполняют одно и то же.

Я бы порекомендовал против смешивания двух.

+0

ooops! Спасибо, что поймали это. – Allen

+0

Но не было бы более эффективным явное упоминание области? – Roland

+0

@Roland, но «локальные» и «аргументы» являются первыми областями, которые CF будет искать, так что это не слишком большая сделка. – Henry

Смежные вопросы