2016-10-13 5 views
-2

Вот два фрагмента кода. Они делают то же самое. Мой вопрос заключается в том, какой из них представляет собой наилучшую практику и в чем причина этого. Большое спасибо Вам!Передача аргументов функции внутри другой функции


function foo(x){ 
    bar(); 
    function bar(){ 
     var y = x + 1; 
    } 
} 

function foo(x){ 
    bar(x); 
    function bar(x){ 
     var y = x + 1; 
    } 
} 

+0

то, что вы исключили as ?? –

+1

это во многом зависит от того, что делает функция. иногда имеет смысл использовать параметр для внутренней функции; в других случаях это не так. Если вы публикуете фактическую функцию, я могу помочь вам намного эффективнее. – naomik

ответ

0

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

var x=10; 
..... 
function foo(){ 
    bar(); 
    function bar(){ 
     var y = x + 1; 
    } 
} 
+0

Спасибо, это ответ, который я искал - повторное использование и производительность! –

-1

Я бы сказал, что лучше практики все, что проще для читателя рассуждать о, так что для этого тривиального примера было бы это:

function bar(x) { 
    var y = x + 1; 
} 

function foo(x) { 
    bar(x); 
} 
-1

Они почти одинаковы, и это, безусловно, не влияет на скорость вашего приложения, за исключением случаев, когда вы w orking на действительно огромной программе.

Однако, для удобства чтения кода вы должны использовать второй вариант.

Кроме того, на некоторых языках, таких как Java, где вы можете писать и использовать статические функции -> ex: foo.bar (x), вы не сможете написать это так. Поэтому, если вы планируете больше учиться и писать лучше, просто используйте второй.

0

Пример, который вы указали, совершенно не подходит для вашего вопроса. В вашем примере, вы даже можете просто сделать это:

function foo(x){ 
    var y = x + 1; 
} 

Но это действительно кажется, что ваша функция ничего не добиться на всех, и что даже делает его более трудным для нас. И чтобы ответить на ваш вопрос, это ситуационный; или зависит от проблема.

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