2016-11-30 1 views
1

Я начинаю изучать JavaScript и использую w3schools в качестве своего ресурса. Будучи новым ребенком на блоке, я хотел бы задать скромный и простой вопрос. С точки зрения непрофессионала - В чем разница между:.innerHTML() - сравнить два подхода (основы javascript)

этот код

function myFunction() { 
    return "Hello World" 
} 
document.getElementById('demo').innerHTML = myFunction(); 

и , что код

function myFunction() { 
    document.getElementById("demo").innerHTML = "Hello World!"; 
} 
myFunction(); 

Причина Я спрашиваю:
Я делаю некоторые упражнения, и я правильно получил конечный результат, выполнив этот c ode, но затем, когда я нажал «показать ответ», показан код , код, который отличается от моего.

В дополнение к моему вопросу - какой из них практичен и какой из них лучше всего подходит для какой ситуации?


описание товара link.

+1

В конце концов они делают то же самое. В другом контексте о том, как/когда они будут вызваны, может привести к различным вещам. – epascarello

+4

* «Я начинаю изучать JavaScript и использую w3schools в качестве моего ресурса». * Я настоятельно рекомендую использовать [MDN] (https://developer.mozilla.org/docs/Web/javascript) вместо этого. И разные книги и блоги. Не w3schools, что довольно плохо. –

+0

стиль мудрый я бы предпочел первый, так как функция делает одну простую вещь и ее можно более легко использовать повторно – aw04

ответ

0

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

1

Учитывая код вы описали,

function myFunction() { 
    return "Hello World" 
} 
document.getElementById('demo').innerHTML = myFunction(); 

Если myFunction() были выполнены в другом месте (скажем, прикрепленный к кнопке), он просто возвращает строку «Hello World».

function myFunction() { 
    document.getElementById("demo").innerHTML = "Hello World!"; 
} 
myFunction(); 

Когда myFunction() выполняется, как описано выше, было бы изменить HTML элемента с id="demo".

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

0

Javascript хорошо известен множеством способов достижения такого же результата. Основываясь на ваших фрагментах кода, очень субъективно сказать, что более практично. Оба они довольно просты, просто для доказательства концепции (у вас нет функции, которая возвращает строку).

Чтобы ответить на ваш комментарий, попробуйте представить себе более практичную ситуацию.

var isAuth = true; // lets imagine this comes as result of non trivial authentication process 
function customGreeting(isAuthenticated) { 
    return isAuthenticated ? "Hello, welcome back" : "Please Sign in to continue"; 
} 
document.getElementById('demo').innerHTML = customGreeting(isAuth); 

Выше кода использует подход из первого фрагмента. Некоторые могут сказать, что это более «элегантно», чем использование второго подхода (ниже).

var isAuth = true; // lets imagine this comes as result of non trivial authentication process 
function customGreeting(isAuthenticated) { 
    if(isAuthenticated){ 
     document.getElementById("demo").innerHTML = "Hello, welcome back"; 
    }else{ 
     document.getElementById("demo").innerHTML = "Please Sign in to continue"; 
    } 
} 
customGreeting(); 

Если мы устанавливаем функциональный подход программирования в сторону (с выходит за рамки данной дискуссии) очень трудно утверждать, какой подход лучше.

+0

Я получаю объяснение здесь, но я не решался на коды с переменными с «истинным» значением. Я предполагаю, что буду сталкиваться с этим, когда получаю формы и вводные данные? Но спасибо @oKonyk! – patrick

+0

@patric, когда вы получаете больше возможностей для кодирования, вы увидите, что мы имеем дело со множеством условий. Мы проверяем 'if' это' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'В моем примере' var isAuth = true; 'исходит из мнимой службы аутентификации (какая реализация не является тривиальной :). Значения могут исходить из форм, запросов на бэкэнд и т. Д. – oKonyk

+0

Большое спасибо! Я с нетерпением жду возможности получить больше информации. – patrick

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