Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как одной функции присвоить другую с параметрами без ее вызова (https://javascript.ru/forum/misc/29092-kak-odnojj-funkcii-prisvoit-druguyu-s-parametrami-bez-ee-vyzova.html)

dmitryck 14.06.2012 15:25

Как одной функции присвоить другую с параметрами без ее вызова
 
Собсно сабж такой.
Не могу понять возможно ли.

Нужно чтобы функция b() вызывала функцию a(1), а с() вызывала функцию a(2).

Но не вызывать a() в момент описания b() и c()

function a(s){
	alert (s)
}

b = a(1) // но тут разумеется уже вызывается a()
с = a(2)

b() // вызываться должно только тут
c() // и тут


Как это реализовать?
Подскажите..

9xakep 14.06.2012 15:29

function a(s){
	alert (s)
}

b = function () {
a(1) 
}// но тут разумеется уже вызывается a()

c = function () {
a(2)
}

b() // вызываться должно только тут
c() // и тут


Ну или так:
function a(s){
	return (s)
}

b = a(1) // но тут разумеется уже вызывается a()

c = a(2)

alert(b) // вызываться должно только тут
alert(c) // и тут

dmitryck 14.06.2012 15:32

угу. точн.
спасибо..)

lord2kim 14.06.2012 19:12

Цитата:

Сообщение от Maxmaxmахimus (Сообщение 181430)
>IE8

уже не кроссбраузерно...

bes 15.06.2012 16:11

Функция в js - это представляющий её текст, поэтому этот текст можно присваивать любым переменным.
Не совсем то, что вы хотели, но можно и так.
var a = function (s){
  alert(s)
}
b = a;
b(3);

tadjik1 15.06.2012 16:48

всё в яваскрипте объект, кроме строки и числа. хотя, если подумать, то они тоже объекты))

tadjik1 15.06.2012 16:54

это шутка такая была вообще-то

я просто к тому, что простые типы тоже имеют обёртки вроде Number() или String(), которые позволяют им иметь методы. разве не так?

bes 15.06.2012 17:41

Цитата:

Сообщение от Maxmaxmахimus
и давно ли?

Вы можете говорить абстрактно объект и т.п., но функция хранится в виде текста (для работы дальше можно не ходить: в виде последовательности чисел, последовательности состояний битов памяти...), когда ставим круглые скобки () у имени переменной, в которой хранится текст функции, происходит её вызов, то есть интерпретатор начинает работать с текстом этой функции и выполнять заложенные в ней действия, не?
Да и вообще программирование в некотором приближении - это работа с текстом, что-то пишем, транслятор это разбирает, что-то получаем.

bes 15.06.2012 19:49

Maxmaxmахimus,
var a = function (s) {
  alert(s)
}

alert(a)

Про то, что с функцией можно работать как с объектом, конечно, также надо знать.

tadjik1 16.06.2012 13:39

Цитата:

Сообщение от Maxmaxmахimus (Сообщение 181746)
в ecma 9 типов данных из них 6 доступны на уровне скрипта

1. причем тут екма?
2. в javascript знаю только 6 (null, undefined, string, boolean, number, object). в конечном счете даже примитивный тип можно назвать похожим на объект, так как у него есть методы (toLowerCase(), у строки). кроме того
var str = 'string';
str.prop = 11;

не выведет ошибку именно из-за того, что у примитивного типа "строка" есть обёртка в виду String().

короче предлагаю закрыть тему.


Часовой пояс GMT +3, время: 08:29.