千鋒教育JavaScript全套視頻教程(10天學(xué)會Js,前端javascrip

? // console.log(b);
? ? ? ? /*
? ? ? ? *****
? ? ? ? ? 變量 ?
? ? ? ? ? ? 在計算機的內(nèi)存中(棧)開辟了一個空間, 給這個空間起了一個名字,這個名字就叫做變量名
? ? ? ? ? ? 這個空間中只能存儲一個內(nèi)容,被存儲的內(nèi)容叫做變量值
? ? ? ? ? x=10;
? ? ? ? ? y=20;
? ? ? ?
? ? ? ? */
? ? ? ? // x=10;
? ? ? ? // console.log(x);//會將x空間中10獲取并且打印
? ? ? ? // x=20;//給x空間重新存儲20值,這時候會覆蓋原有的值
? ? ? ? // console.log(x);
? ? ? ? // x=1;
? ? ? ? // y=2;
? ? ? ? // console.log(x+y);//將x空間中的值和y空間中的值獲取相加并且打印
? ? ? ? /*
? ? ? ? window 這是網(wǎng)頁中最根本元素,所有的內(nèi)容都是window下的內(nèi)容 ,通??梢允÷詗indow
? ? ? ? ?a=1 ?這種寫法屬于早期JavaScript不太成熟時,沒有變量這個概念,會將所有描述賦值放在window對象中
? ? ? ? ?window.a=1;
? ? ? ? ?只有當(dāng)運行到賦值時才會給window對象上創(chuàng)建屬性a,之前是不會創(chuàng)建任何變量空間的,所以在這句話之前打印
? ? ? ? ?a,就會報錯 a is not defined ?a沒有定義
? ? ? ? ?變量可以重復(fù)定義
? ? ? ? ?var b=2; 延續(xù)了早期放入在window對象下的特征,使用var定義的變量有一個特征叫做預(yù)解析
? ? ? ? ?預(yù)解析
? ? ? ? ? ?在script標(biāo)簽剛開始時,還沒有運行到對應(yīng)定義變量的位置,就會在內(nèi)存棧中開辟一個存儲空間,并且起名
? ? ? ? ? ?叫做變量名,但是并沒有給這個空間中存儲任何值,這時候如果獲取這個空間中存儲的值時,因為沒有任何值
? ? ? ? ? ?所以會返回一個undefined(未定義)
? ? ? ? ? ? ? 變量可以重復(fù)定義
? ? ? ? ? ?let c=3是ES6中推出的新的定義變量
? ? ? ? ? ?當(dāng)沒有執(zhí)行到這句話時,它不會存在,并且在執(zhí)行這句話之前打印會報錯Cannot access 'c' before initialization
? ? ? ? ? ?不能c初始化之前調(diào)用它,不牽扯預(yù)解析的概念,沒有使用let定義之前是不能調(diào)用的
? ? ? ? ? ? 不能重復(fù)定義
? ? ? ? ? ? 用let定義的變量并不是放在window下的,所以不能使用window.c獲取
? ? ? ? ? ? let可以作為塊語句的作用范圍內(nèi)
? ? ? ?
? ? ? ? */
? ? // ? ?console.log(c);
? ? // ? ? console.log(a);
? ? ? ? // a=1;
? ? ? ? // var b=2;
? ? ? ? // let c=3;
? ? ? ? // a=2;
? ? ? ? // var b=3;//重復(fù)定義覆蓋了上一個同名變量
? ? ? ? // let c=3;//不能重復(fù)定義,會報錯
? ? ? ? // alert()
? ? ? ? // window.alert()
? ? ? ? // console.log();
? ? ? ? // window.console.log();
? ? ? ? // console.log(window.b);
? ? ? ?
? ? ? ? // console.log(window.c);
? ? ? ? // {
? ? ? ? // ? ? // 如果使用let在塊語句中定義的變量,使用的范圍僅屬于這個塊語句內(nèi),塊語句外不存在
? ? ? ? // ? ? // 把屬于哪個范圍內(nèi)有效叫做作用域
? ? ? ? // ? ? let d=1;
? ? ? ? // ? ? console.log(d);
? ? ? ? // }
? ? ? ? // console.log(d);
? ? ? ? // if(){
? ? ? ? // ? ? let a=1;
? ? ? ? // }
? ? ? ? /*
? ? ? ? ? 變量名
? ? ? ? ? 1、不能起無意義的變量名
? ? ? ? ? 2、變量名命名時只能包含 數(shù)字,字母,下劃線,$。但是第一個符號不能是數(shù)字
? ? ? ? ? 3、不能使用關(guān)鍵字定義變量 ?if for while var這些是js中命令關(guān)鍵詞,不能重復(fù)使用
? ? ? ? ? 4、不能使用保留詞 private public class
? ? ? ? ? 5、變量名盡量使用駝峰式命名 除第一個單詞外每個單詞的首字母大寫,一般臨時變量使用_起頭 _temp _price
? ? ? ? ? 6、禁止使用window對象下所有屬性和方法名相同的變量(var),如果使用let不需要考慮
? ? ? ? ? 7、使用連等時,var定義只有第一個變量,后面都不會做預(yù)解析
? ? ? ? ? 8、變量定義時如果同時定義多個變量,可以使用逗號分割,可以將有初始值的變量定義在一起,沒有初始值的定義在一起
? ? ? ? ? var $a=1;
? ? ? ? ? var $=3;
? ? ? ? ? var _a=1;
? ? ? ? ? var a1=3;
? ? ? ? ? var 1a=3;//錯誤的
? ? ? ?
? ? ? ? */
? ? // ? var ?totalPrice=2000;
? ? // ? ? ? ? console.log(window.status)
? ? var status=3;
? ? console.log(status+1);
? ? // var alert=3;
? ? ? ? // console.log(a1);
? ? ? ? // console.log(b1);
? ? ? ? // 只有第一個是var定義的變量,所以第一個會做預(yù)解析,而后面的b1和c1都不是var定義,而是第一種直接賦值給window的屬性
? ? ? ? // b1和c1都不會做預(yù)解析
? ? // var a1=b1=c1=3;
? ? // console.log(a1,b1,c1);
? ? // var a1,b1,c1;
? ? // a1=b1=c1=3;
? ? // var a1=3,
? ? // ? ? b1=3,
? ? // ? ? c1=3;
? ? ?
? ? </script>