Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   области видимости и другие хитрости JavaScript (https://javascript.ru/forum/misc/57941-oblasti-vidimosti-i-drugie-khitrosti-javascript.html)

squirrelll 27.08.2015 06:44

области видимости и другие хитрости JavaScript
 
Изучая JS, параллельно тестируюь, есть сомнения.. Очень важно мнение экспертов
1.
function f(a,b)
{
	...
}

При вызове f(11), какое значение будет иметь аргумент b внутри функции?
Oтвет: Null
2.
var m = parseInt("strin");

Какое значение будет иметь m? Oтвет: m=0.
3.
function f(n)
{
	if (n > 10)
	{
    	var k = "n";
	}
}

Какую область видимости имеет k? Oтвет: k-Лок.переменная.Находится в начале области видимости функции, а не на уровне блока кода if...
4.
var myPrj = {};
myPrj.myObj = (function() {
    var myPrivateVar = "private";
    var myPrivateFun = function() {
    	return myPrivateVar;
    };
 
    return {
        publicFunName: myPrivateFun();
    };
})();

К чему приведут вызовы m , n:
a) var m = myPrj.myObj.publicFunName();
b) var n = myPrj.myObj.myPrivateFun();
Ответ: m="private", n="private"

Erolast 27.08.2015 07:25

В ФФ еще можно Shift+F4 - там целый блокнотик с возможностью запуска.

caetus 27.08.2015 07:26

вопрос
var k;

k == undefined ???

Erolast 27.08.2015 09:02

А что не так?

BETEPAH 27.08.2015 09:14

Цитата:

Сообщение от squirrelll
При вызове f(11), какое значение будет иметь аргумент b внутри функции?
Oтвет: Null

с чего бы это? Должно быть undefined

2. NaN

devote 27.08.2015 09:33

Ответы:
1. undefined
2. NaN
3. У вас правильный ответ
4. m="private", n=Ошибка выполнения кода

devote 27.08.2015 09:40

Цитата:

Сообщение от Rise
squirrelll, что это? может сам себя проверять будешь? F12 в помощь...

Ну да, давайте закроем форум и вместо форума страницу выведем "Проверяйте сами себя, F12 в помощь!".

За что вы человека в минуса вогнали? только потому что человек учит язык и просит совета у знающих вы лупите минуса. Не справедливо мне кажется.

Erolast 27.08.2015 10:19

Чем "Подобное можно проверять самостоятельно при помощи консоли" не совет?

EmperioAf 27.08.2015 10:50

Цитата:

Сообщение от squirrelll (Сообщение 385885)
Изучая JS, параллельно тестируюь, есть сомнения.. Очень важно мнение экспертов
1.
function f(a,b)
{
	...
}

При вызове f(11), какое значение будет иметь аргумент b внутри функции?
Oтвет: Null
2.
var m = parseInt("strin");

Какое значение будет иметь m? Oтвет: m=0.
3.
function f(n)
{
	if (n > 10)
	{
    	var k = "n";
	}
}

Какую область видимости имеет k? Oтвет: k-Лок.переменная.Находится в начале области видимости функции, а не на уровне блока кода if...
4.
var myPrj = {};
myPrj.myObj = (function() {
    var myPrivateVar = "private";
    var myPrivateFun = function() {
    	return myPrivateVar;
    };
 
    return {
        publicFunName: myPrivateFun();
    };
})();

К чему приведут вызовы m , n:
a) var m = myPrj.myObj.publicFunName();
b) var n = myPrj.myObj.myPrivateFun();
Ответ: m="private", n="private"

1)
function f(a,b)
{
    alert(b);
}
f(10);

2)
var m = parseInt("strin");
alert(m);

3)
function f(n)
{
    if (n > 10)
    {
        var k = "n";
        alert(k+" в if");
    }
    alert(k + " в функции");
    
}
f(15);
alert(k + " в глобальной области видимости");

4)
var myPrj = {};
myPrj.myObj = (function() {
    var myPrivateVar = "private";
    var myPrivateFun = function() {
        return myPrivateVar;
    };
  
    return {
        publicFunName: myPrivateFun()
    };
})();

alert(myPrj.myObj.publicFunName());
alert(myPrj.myObj.myPrivateFun());

squirrelll 27.08.2015 14:25

Спасибо за ответы!

devote 27.08.2015 15:05

Цитата:

Сообщение от Rise
а с моей консоль познает))

а минус то за что? ну подсказал про консоль, молодец. Но минус то ставить есть причина? Я понимаю если человек тупит и т.д. Но человек тока зарегался и тут же ему минус, просто за вопрос.

squirrelll 27.08.2015 15:25

Создаю объект, метод его и свойство.Затем вызываю метод. В чем ошибка?
Var Jjj = new Object();
Jjj.age = 20;
Jjj.getA = function()
{
  alert(Jjj.age);
}
Jjj.getA();


или
Var Jjj = {};
var n = 'age';
Jjj[n] = 20;
Jjj.getA = function()
{
  alert(Jjj['age']);
}
Jjj.getA();

BETEPAH 27.08.2015 15:29

Цитата:

Сообщение от devote
Я понимаю если человек тупит и т.д. Но человек тока зарегался и тут же ему минус, просто за вопрос.

Мой минус был не за вопрос, а за ложные утверждения (ответы), которые будут вводить в заблуждение начинающих

devote 27.08.2015 15:31

Цитата:

Сообщение от BETEPAH
которые будут вводить в заблуждение начинающих

и как повлияет проставленный минус на других начинающих? Ну вот представим что я начинающий, зашел в тему и? Мне нужно на минусы смотреть?

devote 27.08.2015 15:32

Цитата:

Сообщение от squirrelll
В чем ошибка?

var пишется с маленькой буквы.
var Joe = new Object();
Joe.age = 20;
Joe.getAge = function()
{
  alert(Joe.age);
}
Joe.getAge();

BETEPAH 27.08.2015 15:35

Цитата:

Сообщение от devote
и как повлияет проставленный минус на других начинающих? Ну вот представим что я начинающий, зашел в тему и? Мне нужно на минусы смотреть?

Да, карма предназначена, чтоб было видно стоит ли доверять автору сообщения. А по-Вашему, какое её назначение?

Erolast 27.08.2015 15:37

Цитата:

В чем ошибка?
Помимо синтаксической - 1) для создания обычных объектов лучше использовать литералы, 2) с большой буквы в JS принято именовать только классы и немспейсы, 3) название метода и его работа должны соответствовать друг другу и 4) здесь можно использовать ключевое слово this.
var joe = {
    age: 20,
    alertAge: function() {
        alert(this.age);
    }
};

joe.alertAge();

Erolast 27.08.2015 15:41

BETEPAH, ТС же четко написал, что сомневается по поводу тех постулатов и просит указать, чо где не так. Если кто-то воспримет тот пост как проверенные утверждения - его проблемы, надо лучше читать.

KosBeg 27.08.2015 15:41

Цитата:

Сообщение от squirrelll
Создаю объект, метод его и свойство.Затем вызываю метод. В чем ошибка?

1)
Цитата:

Сообщение от devote
var пишется с маленькой буквы.

2) javascript - регистрозависимый язык, но разницы в кавычках нет
var Name и var name это разное
var Name = 'test_1',
     name = "test_2";
alert(Name);
alert(name);

UPD:
Цитата:

Сообщение от Erolast
Помимо синтаксической - 1) для создания обычных объектов лучше использовать литералы, 2) с большой буквы в JS принято именовать только классы и немспейсы, 3) название метода и его работа должны соответствовать друг другу и 4) здесь можно использовать ключевое слово this.

для новичка, наверное, много непонятного)

devote 27.08.2015 15:48

Цитата:

Сообщение от BETEPAH
Да, карма предназначена, чтоб было видно стоит ли доверять автору сообщения. А по-Вашему, какое её назначение?

Согласен в том случае, если автор поста не вопрос задает а пытается утверждать. В данном топике человек не учит а просит помощь, это разные вещи.

BETEPAH 27.08.2015 16:28

Цитата:

Сообщение от devote
Согласен в том случае, если автор поста не вопрос задает а пытается утверждать.

Я именно за утверждение и принял его "ответы".
Если ошибся, приношу свои извинения за несправедливый "минус", squirrelll.
Это было последнее сообщение не по теме.

squirrelll 27.08.2015 23:17

Приму во внимание все замечания.

squirrelll 28.08.2015 00:38

Приму во внимание все замечания.


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