web前端js變數(js變數有哪些)

本文目錄一覽:

Web前端開發知識點之JavaScript的介紹與語法

今天小編要跟大家分享的文章是關於Web前端開發知識點之JavaScript的介紹與語法。正在學習web前端相關知識的小夥伴們來和小編一起看一看吧,希望本篇文章能夠對大家有所幫助。

一、JavaScript介紹

JavaScript是一門客戶端腳本語言,是適應動態網頁製作的需要而誕生的一種編程語言。這門語言可用於HTML和web,更可廣泛用於伺服器、PC、筆記本電腦、平板電腦和智能手機等設備。

在HTML基礎上,使用Javascript可以開發互動式Web網頁,可以增強用戶和HTML頁面的交互過程,可以控制HTML元素讓頁面有一些動態的效果,增強用戶的體驗。

JavaScript使有規律地重複的HTML文段簡化,減少下載時間。

二、JavaScript語法

①與HTML的結合方式

JavaScript與HTML的結合方式有兩種,一種是內部JavaScript,一種是外部JavaScript,定義的方式與CSS類似。

內部JavaScript需要定義一對標籤,標籤體的內容就是JavaScript代碼。例如:

alert(“我的第一個JavaScript”);

外部JavaScript也需要定義一對標籤,通過src屬性引入外部的就是文件。例如:

注意:JavaScript可以定義在HTML頁面的任何地方,但是定義的位置會影響執行的順序。而且可以在HTML文檔中放入不限數量的腳本。通常的做法是把函數放入部分中,或者放在頁面底部。這樣就可以把它們安置到同一處位置,不會干擾頁面的內容。

②注釋

JavaScript的注釋與java相同,一種是「//」單行注釋,一種是「/**/」多行注釋。例如

//這是單行注釋

/*

這是多行注釋

這是多行注釋*/

③數據類型

JavaScript的數據類型包括兩大類:原始數據類型和引用數據類型。

原始數據類型包括:

·number數字:包括整數、小數和NaN(notanumber不是數字的數字類型)

·string字元串

·boolean布爾型:包括true和false

·null:一個對象為空的佔位符

·undefined:未定義

引用數據類型就是指對象類型。

④變數

所謂變數就是一小塊存儲數據的內存空間。java語言是強類型語言,在開闢變數存儲空間時就定義了存儲數據的類型,而且只能存儲固定類型的數據;JavaScript是弱類型語言,在開闢變數存儲空間時不定義存儲數據的類型,可以存儲任意類型的數據。

聲明變數用var關鍵字,例如:

vara=3;

我們可以使用typeof運算符獲取變數的類型。

⑤運算符

JavaScript中的運算符與java中的基本一致,大家可以參考這個鏈接複習一下,接下來我再說說JavaScript里比較特殊的運算符。

在說運算符之前先說一個注意事項:在JavaScript中如果運算數不是運算符所要求的的類型,那麼JavaScript引擎會自動將運算數進行類型轉換。

因此在JavaScript中1==”1″的結果是true,那麼我想讓他的結果是false該怎麼辦呢?所以JavaScript引入了新的運算符全等於(===),此時1===”1″的結果就是false了。

⑥流程式控制制語句

JavaScript中流程式控制制語句包括if…else…、switch、while、do…while…、for等,語法規則與java中完全一致,點擊上方關鍵詞可查看java語法規則。

⑦特殊語法(不建議)

JavaScript語句以;結尾,如果一行只有一條語句則;可以省略。

變數定義是使用var關鍵字,也可以不使用。

以上就是小編今天為大家分享的關於Web前端開發知識點之JavaScript的介紹與語法的文章,希望本篇文章能夠對正在從事web前端工作和學習的小夥伴們有所幫助,想要了解更多web前端知識記得關注北大青鳥web培訓官網,最後祝願小夥伴們工作順利,成為一名優秀的web前端工程師。

文章來源:原創凱哥的故事凱哥的故事

Web前端工程師要知道的JavaScript變數命名規範

今天小編要跟大家分享的文章是關於Web前端工程師要知道的JavaScript變數命名規範,正在從事Web前端工作的小夥伴們來和小編一起看一看吧,希望本篇文章能夠對大家有所幫助。

JavaScript變數命名規範:只能由英語字母、數字、下劃線、美元符號$構成,且不能以數字開頭,並且不能是JavaScript保留字。

下列都是非常正確的變數命名:

varhaha=250;

varxixi=300;

vara1=400;

vara2=400;

varabc_123=400;

var$abc=999;

var$o0_0o$=888;

var$=1000;

var_=2000;

var________=3000;

下列都是錯誤的命名:

vara-1=1000;//不能有怪異符號

vara@=2000;//不能有怪異符號

var2year=3000;//不能以數字開頭

vara¥=4000;//不能有怪異符號

vara*#$#$@=5000;//不能有怪異符號

varab=300;//不能有空格

下列的單詞,叫做保留字,就是說不允許當做變數名

abstract、boolean、byte、char、class、const、debugger、double、enum、export、extends、final、float、goto

implements、import、int、interface、long、native、package、private、protected、public、short、static、super、synchronized、throws、transient、volatile

需要注意大寫字母是可以使用的,並且大小寫敏感。也就是說A和a是兩個變數。

1varA=250;

2vara=888;

以上就是小編今天為大家分享的關於Web前端工程師要知道的JavaScript變數命名規範的文章,希望本篇文章能夠對正在從事Web前端工作的小夥伴們有所幫助。想要了解更多Web前端知識記得關注北大青鳥Web培訓官網。最後祝願小夥伴們工作順利!

學習Web前端要知道的JavaScript基礎語法規則

今天小編要跟大家分享的文章是關於學習web前端要知道的JavaScript基礎語法規則。俗話說,「無規矩不成方圓」。用在計算機語言上也同樣使用。每種計算機語言都有自己的語法規則,只有遵循語法規則才能寫出符合要求的代碼。JavaScript也不例外,在使用JavaScript語言時,需要遵循某些語法規則,如執行順序、大寫和注釋規範。下面我們就以來介紹下,JavaScript基礎語法規則。

1.按從上到下的順序執行

JavaScript程序按照在HTML文檔中的排列順序逐行執行。如果代碼(例如函數、全局變數等)需要在整個HTML文件中使用,最好將這些代碼放在HTML文件的標記中。

2.區分大小寫字母

JavaScript嚴格區分字母大小寫。也就是說,在輸入關鍵字、函數名、變數以及其他標識符時,都必須採用正確的大小寫形式。例如,變數username與變數UserName是兩個不同的變數。

3.每行結尾的分號可有可無

JavaScript語言並不要求必須以分號「;」”作為語句的結束標記。如果語句的結束處沒有分,JavaScript會自動將該行代碼的結尾作為整個語句的結束。例如,下面兩行示例代碼,雖然第一行代碼結尾沒有寫分號,但也是正確的。(注意:書寫JavaScript代碼時,為了保證代碼的嚴謹性、準確性,最好在每行代碼的結尾加上分號。)

alert

alert

4、注釋規範

使用JavaScript時,為了使代碼易於閱讀,需要為

JavaScript代碼加一些注釋。JavaScript代碼注釋和CSS代碼注釋方式相同,也分為單行注釋和多行注釋,示例代碼如下:

//我是單行注釋

/*

我是多行注釋1

我是多行注釋2

我是多行注釋3

*/

以上就是小編今天為大家分享的關於學習web前端要知道的JavaScript基礎語法規則的文章,希望本篇文章能夠對正在從事會計相關工作的小夥伴們有所幫助。想要了解更多會計相關知識記得關注北大青鳥web培訓官網。最後祝願小夥伴們工作順利成為一名優秀的web前端工程師!

Web前端工程師應該知道的JavaScript的10個難點!

今天小編要跟大家分享的文章是關於Web前端工程師應該知道的JavaScript的10個難點。相信很多正在學習Web前端知識的小夥伴對於JavaScript存在很多疑問,為了幫助大家更好的學習Web前端知識,成為一名優秀的web前端工程師,今天小編為大家分享了這篇Web前端應該知道的JavaScript難點的問題,下面我們一起看一看吧!

1、立即執行函數

立即執行函數,即ImmediatelyInvokedFunctionExpression

(IIFE),正如它的名字,就是創建函數的同時立即執行。它沒有綁定任何事件,也無需等待任何非同步操作:

1.(function(){

2.

3.//代碼

4.

5.//…

6.

7.})();

function(){}是一個匿名函數,包圍它的一對括弧將其轉換為一個表達式,緊跟其後的一對括弧調用了這個函數。立即執行函數也可以理解為立即調用一個匿名函數。立即執行函數最常見的應用場景就是:將var變數的作用域限制於你們函數內,這樣可以避免命名衝突。

2、閉包

對於閉包(closure),當外部函數返回之後,內部函數依然可以訪問外部函數的變數。

1.(function(){

2.

3.//代碼

4.

5.//…

6.

7.})();

代碼中,外部函數f1隻執行了一次,變數N設為0,並將內部函數f2賦值給了變數result。由於外部函數f1已經執行完畢,其內部變數N應該在內存中被清除,然而事實並不是這樣:我們每次調用result的時候,發現變數N一直在內存中,並且在累加。為什麼呢?這就是閉包的神奇之處了!

3、使用閉包定義私有變數

通常,JavaScript開發者使用下劃線作為私有變數的前綴。但是實際上,這些變數依然可以被訪問和修改,並非真正的私有變數。這時,使用閉包可以定義真正的私有變數:

1.functionProduct(){

2.

3.varname;

4.

5.this.setName=function(value){

6.name=value;

7.};

8.

9.this.getName=function(){

10.returnname;

11.};

12.}

13.

14.varp=newProduct();

15.p.setName(“Fundebug”);

16.

17.console.log(p.name);//輸出undefined

18.console.log(p.getName());//輸出Fundebug

代碼中,對象p的的name屬性為私有屬性,使用p.name不能直接訪問。

4、prototype

每個JavaScript構造函數都有一個prototype屬性,用於設置所有實例對象需要共享的屬性和方法。prototype屬性不能列舉。JavaScript僅支持通過prototype屬性進行繼承屬性和方法。

1.functionRectangle(x,y)

2.{

3.this._length=x;

4.this._breadth=y;

5.}

6.

7.Rectangle.prototype.getDimensions=function()

8.{

9.return{

10.length:this._length,

11.breadth:this._breadth

12.};

13.};

14.

15.varx=newRectangle(3,4);

16.vary=newRectangle(4,3);

17.

18.console.log(x.getDimensions());//{length:3,breadth:4}

19.console.log(y.getDimensions());//{length:4,breadth:3}

代碼中,x和y都是構造函數Rectangle創建的對象實例,它們通過prototype繼承了getDimensions方法。

5、模塊化

JavaScript並非模塊化編程語言,至少ES6落地之前都不是。然而對於一個複雜的Web應用,模塊化編程是一個最基本的要求。這時,可以使用立即執行函數來實現模塊化,正如很多JS庫比如jQuery以及我們Fundebug都是這樣實現的。

1.varmodule=(function(){

2.varN=5;

3.

4.functionprint(x){

5.console.log(“Theresultis:”+x);

6.}

7.

8.functionadd(a){

9.varx=a+N;

10.print(x);

11.}

12.

13.return{

14.description:”Thisisdescription”,

15.add:add

16.};

17.})();

18.

19.

20.console.log(module.description);//輸出”thisisdescription”

21.

22.module.add(5);//輸出「Theresultis:10」

所謂模塊化,就是根據需要控制模塊內屬性與方法的可訪問性,即私有或者公開。在代碼中,module為一個獨立的模塊,N為其私有屬性,print為其私有方法,decription為其公有屬性,add為其共有方法。

6、變數提升

JavaScript會將所有變數和函數聲明移動到它的作用域的最前面,這就是所謂的變數提升(Hoisting)。也就是說,無論你在什麼地方聲明變數和函數,解釋器都會將它們移動到作用域的最前面。因此我們可以先使用變數和函數,而後聲明它們。但是,僅僅是變數聲明被提升了,而變數賦值不會被提升。如果你不明白這一點,有時則會出錯:

1.console.log(y);//輸出undefined

2.

3.y=2;//初始化y

上面的代碼等價於下面的代碼:

1.vary;//聲明y

2.

3.console.log(y);//輸出undefined

4.

5.y=2;//初始化y

為了避免BUG,開發者應該在每個作用域開始時聲明變數和函數。

7、柯里化

柯里化,即Currying,可以是函數變得更加靈活。我們可以一次性傳入多個參數調用它;也可以只傳入一部分參數來調用它,讓它返回一個函數去處理剩下的參數。

1.varadd=function(x){

2.returnfunction(y){

3.returnx+y;

4.};

5.};

6.

7.console.log(add(1)(1));//輸出2

8.

9.varadd1=add(1);

10.console.log(add1(1));//輸出2

11.

12.varadd10=add(10);

13.console.log(add10(1));//輸出11

代碼中,我們可以一次性傳入2個1作為參數add(1)(1),也可以傳入1個參數之後獲取add1與add10函數,這樣使用起來非常靈活。

8、apply,call與bind方法

JavaScript開發者有必要理解apply、call與bind方法的不同點。它們的共同點是第一個參數都是this,即函數運行時依賴的上下文。

三者之中,call方法是最簡單的,它等價於指定this值調用函數:

1.varuser={

2.name:”RahulMhatre”,

3.whatIsYourName:function(){

4.console.log(this.name);

5.}

6.};

7.

8.user.whatIsYourName();//輸出”RahulMhatre”,

9.

10.varuser2={

11.name:”NehaSampat”

12.};

13.

14.user.whatIsYourName.call(user2);//輸出”NehaSampat”

·apply方法與call方法類似。兩者唯一的不同點在於,apply方法使用數組指定參數,而call方法每個參數單獨需要指定:

·apply(thisArg,[argsArray])

1.varuser={

2.greet:”Hello!”,

3.greetUser:function(userName){

4.console.log(this.greet+””+userName);

5.}

6.};

7.

8.vargreet1={

9.greet:”Hola”

10.};

11.

12.user.greetUser.call(greet1,”Rahul”);//輸出”HolaRahul”

13.user.greetUser.apply(greet1,[“Rahul”]);//輸出”HolaRahul”

使用bind方法,可以為函數綁定this值,然後作為一個新的函數返回:

1.varuser={

2.greet:”Hello!”,

3.greetUser:function(userName){

4.console.log(this.greet+””+userName);

5.}

6.};

7.

8.vargreetHola=user.greetUser.bind({greet:”Hola”});

9.vargreetBonjour=user.greetUser.bind({greet:”Bonjour”});

10.

11.greetHola(“Rahul”)//輸出”HolaRahul”

12.greetBonjour(“Rahul”)//輸出”BonjourRahul”

9、memoization

Memoization用於優化比較耗時的計算,通過將計算結果緩存到內存中,這樣對於同樣的輸入值,下次只需要中內存中讀取結果。

1.functionmemoizeFunction(func)

2.{

3.varcache={};

4.returnfunction()

5.{

6.varkey=arguments[0];

7.if(cache[key])

8.{

9.returncache[key];

10.}

11.else

12.{

13.varval=func.apply(this,arguments);

14.cache[key]=val;

15.returnval;

16.}

17.};

18.}

19.

20.

21.varfibonacci=memoizeFunction(function(n)

22.{

23.return(n===0||n===1)?n:fibonacci(n-1)+fibonacci(n-2);

24.});

25.

26.console.log(fibonacci(100));//輸出354224848179262000000

27.console.log(fibonacci(100));//輸出354224848179262000000

代碼中,第2次計算fibonacci(100)則只需要在內存中直接讀取結果。

10、函數重載

所謂函數重載(method

overloading),就是函數名稱一樣,但是輸入輸出不一樣。或者說,允許某個函數有各種不同輸入,根據不同的輸入,返回不同的結果。憑直覺,函數重載可以通過if…else或者switch實現,這就不去管它了。jQuery之父John

Resig提出了一個非常巧(bian)妙(tai)的方法,利用了閉包。

從效果上來說,people對象的find方法允許3種不同的輸入:

0個參數時,返回所有人名;1個參數時,根據firstName查找人名並返回;2個參數時,根據完整的名稱查找人名並返回。

難點在於,people.find只能綁定一個函數,那它為何可以處理3種不同的輸入呢?它不可能同時綁定3個函數find0,find1與find2啊!這裡的關鍵在於old屬性。

由addMethod函數的調用順序可知,people.find最終綁定的是find2函數。然而,在綁定find2時,old為find1;同理,綁定find1時,old為find0。3個函數find0,find1與find2就這樣通過閉包鏈接起來了。

根據addMethod的邏輯,當f.length與arguments.length不匹配時,就會去調用old,直到匹配為止。

1.functionaddMethod(object,name,f)

2.{

3.varold=object[name];

4.object[name]=function()

5.{

6.//f.length為函數定義時的參數個數

7.//arguments.length為函數調用時的參數個數

8.if(f.length===arguments.length)

9.{

10.returnf.apply(this,arguments);

11.}

12.elseif(typeofold===”function”)

13.{

14.returnold.apply(this,arguments);

15.}

16.};

17.}

18.

19.

20.//不傳參數時,返回所有name

21.functionfind0()

22.{

23.returnthis.names;

24.}

25.

26.

27.//傳一個參數時,返回firstName匹配的name

28.functionfind1(firstName)

29.{

30.varresult=[];

31.for(vari=0;i

32.{

33.if(this.names[i].indexOf(firstName)===0)

34.{

35.result.push(this.names[i]);

36.}

37.}

38.returnresult;

39.}

40.

41.

42.//傳兩個參數時,返回firstName和lastName都匹配的name

43.functionfind2(firstName,lastName)

44.{

45.varresult=[];

46.for(vari=0;i

47.{

48.if(this.names[i]===(firstName+””+lastName))

49.{

50.result.push(this.names[i]);

51.}

52.}

53.returnresult;

54.}

55.

56.

57.varpeople={

58.names:[“DeanEdwards”,”AlexRussell”,”DeanTom”]

59.};

60.

61.

62.addMethod(people,”find”,find0);

63.addMethod(people,”find”,find1);

64.addMethod(people,”find”,find2);

65.

66.

67.console.log(people.find());//輸出[“DeanEdwards”,”AlexRussell”,”DeanTom”]

68.console.log(people.find(“Dean”));//輸出[“DeanEdwards”,”DeanTom”]

69.console.log(people.find(“Dean”,”Edwards”));//輸出[“DeanEdwards”]

以上就是小編今天為大家分享的關於Web前端工程師應該知道的JavaScript的10個難點。希望本篇文章能夠對正在從事Web前端學習的小夥伴們有所幫助。想要了解更多web前端相關知識記得關注北大青鳥Web培訓官網最後祝願小夥伴們工作順利!

原文鏈接:#/a/1190000010371988

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/249860.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 17:14
下一篇 2024-12-12 17:14

相關推薦

  • JS Proxy(array)用法介紹

    JS Proxy(array)可以說是ES6中非常重要的一個特性,它可以代理一個數組,監聽數據變化並進行攔截、處理。在實際開發中,使用Proxy(array)可以方便地實現數據的監…

    編程 2025-04-29
  • int類型變數的細節與注意事項

    本文將從 int 類型變數的定義、聲明、初始化、範圍、運算和類型轉換等方面,對 int 類型變數進行詳細闡述和講解,幫助讀者更好地掌握和應用 int 變數。 一、定義與聲明 int…

    編程 2025-04-29
  • Python 常用資料庫有哪些?

    在Python編程中,資料庫是不可或缺的一部分。隨著互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的資料庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • Python通配符有哪些

    Python通配符是一種表示字元串中模糊匹配的有效工具,用於匹配與具有特定模式匹配的字元串。Python中主要的通配符有:*,?,[]和{}。 一、星號通配符 * 在Python中…

    編程 2025-04-29
  • Python input參數變數用法介紹

    本文將從多個方面對Python input括弧里參數變數進行闡述與詳解,並提供相應的代碼示例。 一、基本介紹 Python input()函數用於獲取用戶輸入。當程序運行到inpu…

    編程 2025-04-29
  • Python Web開發第三方庫

    本文將介紹Python Web開發中的第三方庫,包括但不限於Flask、Django、Bottle等,並討論它們的優缺點和應用場景。 一、Flask Flask是一款輕量級的Web…

    編程 2025-04-29
  • Python匿名變數的使用方法

    Python中的匿名變數是指使用「_」來代替變數名的特殊變數。這篇文章將從多個方面介紹匿名變數的使用方法。 一、作為佔位符 匿名變數通常用作佔位符,用於代替一個不需要使用的變數。例…

    編程 2025-04-29
  • Web程序和桌面程序的區別

    Web程序和桌面程序都是進行軟體開發的方式,但是它們之間存在很大的區別。本文將從多角度進行闡述。 一、運行方式 Web程序運行於互聯網上,用戶可以通過使用瀏覽器來訪問它。而桌面程序…

    編程 2025-04-29
  • 註冊表取證工具有哪些

    註冊表取證是數字取證的重要分支,主要是獲取計算機系統中的註冊表信息,進而分析痕迹,獲取重要證據。本文將以註冊表取證工具為中心,從多個方面進行詳細闡述。 一、註冊表取證工具概述 註冊…

    編程 2025-04-29
  • Python變數在內存中的存儲

    該文章將從多個方面對Python變數在內存中的存儲進行詳細闡述,包括變數的聲明和賦值、變數的引用和指向、內存地址的變化、內存管理機制等。 一、聲明和賦值 在Python中,變數聲明…

    編程 2025-04-29

發表回復

登錄後才能評論