依照提升Hoisting的观念
创造阶段:
var a;
执行阶段:
console.log(a);
a = 'Hello'
console.log(a);
依照RHS跟LHS规则:
console.log(a); -> 向右查找var a的值属於RHS,但是尚未赋值,所以出现结果undefined。
a = 'Hello'
console.log(a); ->向右查找var a的值属於RHS,但是上一行程序码已赋予变数a = 'Hello',所以出现Hello。
依照RHS跟LHS规则:
1 = true;
1非变数,无法根据LHS规则给予赋值,所以会出现 left-hand side的错误讯息。
console.log(a);
变数a需根据RHS规则向右查找值,但是尚未宣告变数a,会出现not defined的错误讯息。
依照提升Hoisting的观念
创造阶段:
function sayHi(){
var a = 'Mary';
a = 'Tom';
}
var a
执行阶段:
a = 'Casper'
sayHi();
console.log('Hello'+' '+a);
console.log的a变数是来自於全域变数var a,非函式里面的区域变数 a = 'Tom',所以为Hello Casper。
依照javascript语言特性含有同步与非同步的特徵,函式setTimeout(function ()----)属於非同步范畴,需等到函式function a完成後再执行,故3秒後出现Mary的讯息。
依照提升Hoisting的观念
创造阶段:
function youName(){
console.log('你叫什麽');
}
function sayHi(name){
console.log('oh' + ' ' + name + ' ' +'你好!');
}
function myName(name){
setTimeout(function(){
console.log('我叫' + ' ' + name + '!');
},0)
}
var name
执行阶段:
name = 'Tomy'
youName();
myName(name);
sayHi(name);
youName():'你叫什麽'
myName(name):依照javascript语言特性含有同步与非同步的特徵,函式setTimeout(function ()----)属於非同步范畴,与等到其他执行完毕。
sayHi(name):name已经先行赋值为'Tomy',所以会出现 oh Tomy 你好!。
回到function myName(name): 我叫 Tomy !。
依照RHS跟LHS规则:
sayHi() = 'Tomy';
sayHi()非变数,无法根据LHS规则给予赋值,所以会出现 left-hand side的错误讯息。
依照提升Hoisting的观念
创造阶段:
function sayHi(a){
var a = 'Mark';
function fu(){
var a = 'Casper'
}
fu();
a = 'HexSchool'
}
var a
执行阶段:
a = 'Mary'
sayHi(a);
console.log(a);
sayHi(a):
1. a在全域执行环境已经被赋值'Mary'。
2. function sayHi(a),里面的var a = 'Mark'只是区域变数,当函式function sayHi(a)运作完之
後,就没有作用。
所以最後会出现 Mary。
依照提升Hoisting的观念
创造阶段:
function fu(){
if(a){
console.log('Hello');
}else{
console.log('oh!');
}
}
var a
执行阶段:
fu();
a = true
<<: 为了转生而点技能-javascript,day3(观念厘清-执行绪与同步、非同步
>>: 为了转生而点技能-javascript,day3(陈述式及表达式、函式陈述式与函式表达式
蒙特兰在过去曾经讲过,在别人藐视的事中获得成功,是一件了不起的事,因为它证明不但战胜了自己,也战胜了...
这个得上一篇:https://ithelp.ithome.com.tw/articles/10258...
不过让我印象最深刻的面试就是yahoo所委托的专案 那时候委托者是需要做出一个yahoo news...
[Day29] Whack A Mole Game 打地鼠 需要用到的技巧与练习目标 const s...
今天要来介绍广播接收程序,先从Broadcast receiver的运作机制,它的运作机制包含:送出...