js執行會分為2段,第一段是預處理階段,在window中,第二階段是執行階段,賦值
一、js全域性預處理階段,會載入:
1、用宣告的方式建立函式
2、用var定義的變數
舉例:f();
g();
var g = function(){} //函式表示式 報錯
function f(){} //宣告的方式
console.log(a);
console.log(b);
var a =5;
b=6; //報錯
二、js全域性預處理階段策略
1、處理函式宣告有衝突,會覆蓋
2、處理變數宣告有衝突,會忽略
舉例:alert(f);
function f(){
console.log(『111』)
var f = 5; //忽略
function f(){ //覆蓋
cosole.log('222');
三、js全域性執行階段
alert(a); //undefined
//alert(b); //報錯
alert(f); //function f()...
alert(g);//undefined
var a = 5;
b =6;
alert(b);
function f(){
console.log('f')
var g = function(){
console.log('g');
alert(g);
預處理階段
window{
f:指向函式
a:undefined
g:undefined
執行階段
window{
f:指向函式
a:5b:6
g:指向函式
四、函式預處理階段
預處理階段:a.每呼叫一次,產生乙個lexicalenvironment
b.先函式的引數
c.內部宣告式函式
d.內部var變數
e.衝突情況與全域性處理一樣
舉例function f(a,b){
alert(a)
alert(b);
var b = 100l
function a(){
f(1, 2);
//載入
lexical env{
a:1b:2 //如果只傳了乙個引數 則b為undefind
arguments:
//處理函式內部
lexical env{
a:1 //覆蓋 指向函式的引用
b:2 //忽略
arguments:
執行階段:
a.給預處理階段的成員賦值
b.如果沒有用var宣告的變數,會成為最外部lexicalenvironment的成員
前端基礎 js1
break 直接跳出當前迴圈或者乙個switch語句。如果你的迴圈是巢狀的,需要逐步使用break跳出。for var b 1 b 20 b document.writeln b 輸出1 11 以上 在b 12的時候就結束循壞。continue 終止當前的一次迴圈過程,不跳出迴圈,繼續往下判斷循壞條...
js 1 設計模式
一 工廠模式 使用場景 1.jquery中只有乙個 2.react 中的reactelement 方法 class jquery css window.function selector body css 二 單例模式 單例模式 只能例項化乙個物件,例子中是在getinstance中例項化,其他地方...
製作水果忍者 JS 1
他是c 我寫的js 記錄一下我寫的過程方便回憶 先是製作背景,然後學到了乙個製作ugui很重要的九宮格,這個很方便去製作背景的大小。利用這個圓形透明背景製作出這兩種大小不一樣背景 文字是自己新增的 然後製作read go 的開始提示。pragma strict import unityengine....