日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JS基础篇2:

發布時間:2023/12/18 javascript 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JS基础篇2: 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 1. JS變量
    • 1.1 局部變量和全局變量
  • 2. JS函數
  • 3. 數據類型
  • 4. 事件

1. JS變量

注意:JS是弱編程語言,不論何種數據類型,賦值方式:

  • 聲明:var 變量名;
  • 賦值:變量名=值;
  • 變量聲明后,沒手動賦值時,系統默認賦值是undefined.
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>關于JS中的變量</title> </head> <body><!--定義JS代碼格式:JS代碼和CSS一樣,都是基于HTML,脫離HTML則無意義--><script type="text/javascript">/** 1.javaScript當中的變量,如何聲明,怎么賦值?* --聲明:var 變量名;* 賦值:變量名=值;* var i=100;i=false;i="abc";* i=new Object(); i=3.123;* 2.重點:javaScript是一種弱類型編程語言。* *///在JS中,當一個變量沒有手動賦值的時候,系統默認是undefined.var i;//undefined在JS中是一個具體存在值。alert("i="+i);//i=undefinedalert(undefined);var k=undefined;alert("k="+k);//一個變量沒有聲明/定義,直接訪問?//alert(age);//語法錯誤:'age' is not defined,變量age不存在,沒聲明。var a,b,c=400.5;alert("a="+a);alert("b="+b)alert("c="+c);a=false;alert(a);a="hsdj";alert(a)a=1.2;alert(a)</script> </body> </html>

1.1 局部變量和全局變量

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>JS的局部變量和全局變量</title> </head> <body><script type="text/javascript">/** 全局變量:* 在函數體之外聲明的變量屬于全局變量,全局變量的生命周期是:* -瀏覽器打開時聲明,瀏覽器關閉時銷毀,盡量少用。因為全局變量會一直在瀏覽器的內存當中,耗費內存空間。* -能使用局部變量盡量使用局部變量。* 局部變量:* 在函數體當中聲明的變量,包括一個函數的形參都屬于局部變量,* 局部變量的生命周期是:函數開始執行時局部變量的內存空間開辟,函數執行結束之后,局部變量的內存空間釋放。* 局部變量生命周期較短。* *///全局變量var i=100;function accessI() {//訪問的是全局變量alert("i="+i);}accessI();//全局變量var username="jack";function accessUsername() {//局部變量var username="李四";//就近原則:訪問局部變量alert("username="+username)}//調用函數accessUsername();//訪問全局變量,上面函數執行結束之后,局部變量的內存空間釋放。alert("username ="+username);function accessAge() {var age=60;alert("年齡="+age);}accessAge();//alert("age="+age);//報錯(語法不對),局部變量已經釋放了//以下語法很奇怪function myfun() {//當一個變量聲明的時候沒有使用var關鍵字,那么不管這個變量是在哪里聲明的,都是全局變量。myname="吳京";alert("myfun是"+myname)//myfun是吳京}myfun();alert("myfun="+myname)//myfun=吳京,還是會輸出,myname未使用var,是全局變量</script> </body> </html>

2. JS函數

函數表示的2種方式:

第一種方式:
function 函數名(形式參數列表){
函數體;
}
第二種方式:
函數名=function(形式參數列表){
函數體;
}

(1)

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>JS函數初步</title> </head> <body> <script type="text/javascript">/** 1.JS中的函數:等同于JAVA語言中的方法,函數是一段可以被* 重復利用的片段。** 2.JS語法格式: JS的函數不需要指定返回值類型,返回什么類型都行。* 第一種方式:* function 函數名(形式參數列表){* 函數體;* }* 第二種方式:* 函數名=function(形式參數列表){* 函數體;* }* */function sum(a,b) {//a和b都是局部變量,他們都是形參(a和b都是變量名,變量名隨意)alert(a+b)}//函數只有調用才能執行的sum(12,34)//定義函數sayHellosayHello=function (username) {alert("hello "+username)}//調用函數sayHello("胡歌") </script><input type="button" value="點擊" onclick="sayHello('JACK')"/><input type="button" value="求和" onclick="sum(10,18)"/> </body> </html>

(2)JS語法隨意,"+"也表示字符串拼接。

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>JS函數初步</title> </head> <body> <script type="text/javascript">/** java中的方法有重載機制,JS中的函數能重載嗎?* JS當中的函數在調用的時候,參數的類型沒有限制,并且參數的個數也沒有限制,JS就是這么隨意。(弱類型)* */function sum(a,b) {return a+b;}//調用sum函數var retValue=sum(2,4);alert(retValue)//6//字符串拼接 "+"是連接的作用var retValue2=sum("JACK");//JACK賦值給a變量,b變量沒有賦值,系統默認賦值undefinedalert(retValue2);//JACKundefinedvar retValue21=sum(3,"號是科比");alert(retValue21);//3號是科比var retValue3=sum();alert(retValue3);//NaN (NaN是一個具體存在的值,該值表示不是數字)var retValue4=sum(1,2,3,4);alert(retValue4)//3,1+2=3 后面數字作廢/** 在JS中,函數的名字不能重名,當函數重名的時候,后聲明的函數會將之前聲明的同名函數覆蓋。* */function test1(username) {alert("test1");}function test1() {alert("test1,test1,test1");}test1("陳浩民")//這個調用的是第二個test1()函數。test1,test1,test1 </script> </body> </html>

3. 數據類型

  • 原始類型:Undefined、Number、String、Boolean、Null
  • 引用類型:Object以及Object的子類
  • typeof運算符的運算結果是以下6個字符串之一:注意字符串都是小寫。
    “undefined” “number” “string” “boolean” “object” “function”
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>JS的數據類型</title> </head> <body><script type="text/javascript">/** 1.雖然JS的變量在聲明的時候不需要指定數據類型,但是賦值,每一個數據還是有類型的。所以也需要學習* JS包括哪些數據類型。* 原始類型:Undefined、Number、String、Boolean、Null* 引用類型:Object以及Object的子類* 2.ES規范,在ES6之后,又基于以上的6種類型外添加一種新的類型:* Symbol* 3.JS中有一個運算符叫作typeof,這個運算符可以在程序的運行階段動態獲取變量的數據類型。* --typeof運算符的語法格式:typeof 變量名* --typeof運算符的運算結果是以下6個字符串之一:注意字符串都是小寫。* "undefined" "number" "string" "boolean" "object" "function"** 4.在JS中比較字符串是否相等使用"=="完成。* */function sum(a,b) {if (typeof a=="number" && typeof b=="number"){return a+b;}alert(a+","+b+"必須都是數字!");//false,abc必須都是數字!}var retValue=sum(false,"abc");alert(retValue);//undefined,function函數沒有返回值,則retValue就是默認值undefinedretValue1=sum(3,5);alert(retValue1);//8,函數返回了值a+b=8var i;alert(typeof i);//undefinedvar k=10;alert(typeof k);//numbervar o="虎哥";alert(typeof o);//stringvar p=false;alert(typeof p);//booleanvar d=null;alert(typeof d);//objectvar obj=new Object();alert(typeof obj);//objectfunction f() {}alert(typeof f);//function</script> </body> </html>

數據類型
(1)undefined

<script type="text/javascript">/*Undefined未賦值時自動默認賦值;手動賦值*/var i;//默認undefinedvar k=undefined;//賦值undefinedalert(i==k);//truevar y="undefined";//字符串undefinedalert(y==k);//false </script>

(2)Number

<script type="text/javascript">/** 1.Number類型包括哪些值?* -1 0 1 2 2.3 3.14 100......NaN Infinity* 整數、小數、正數、負數、不是數字、無窮大都屬于Number類** 2.關于NaN(表示Not a Number,不是一個數字,但屬于Number類型);* 什么情況出現NaN?* 運算結果本來應該是一個數字,最后算完不是一個數字的時候,結果是NaN.* 3.isNaN函數:true表示不是一個數字,false表示是一個數字。* 4.parseInt()函數* 5.parseFloat()函數* 6.Math.ceil()函數:向上取整* */var v1=1;var v2=213.32;var v3=-123;var v4=NaN;var v5=Infinity;//Numberalert(typeof v1);alert(typeof v2);alert(typeof v3);alert(typeof v4);alert(typeof v5);var a=100;var b="中國";alert(a/b);//除號顯然最后結果應該是一個數字,但是運算的過程中導致最后不是一個數字,那么結果是NaN.var e=1213;var f="janjieshi";alert(e+f);//1213janjieshi,先進行字符串拼接運算//Infinity(當除數為0的時候,結果為無窮大)alert(10/0);//Infinity//isNaN函數:結果是true表示不是一個數字,反之,是數字function sum(a,b) {if (isNaN(a)||isNaN(b)){alert("參與運算的必須是數字");return;}return a + b;}sum(100,"acv");alert(sum(100,200));//parseInt():可以將字符串自動轉換成整型數字,并且取整數位。alert(parseInt("3.9999"));//3alert(parseInt(3.9999));//3//parseFloat():可以將字符串自動轉換成浮點型數字。alert(parseFloat("3.434")+2);//5.434//Math.ceil()alert(Math.ceil(2.1));//3,向上取整。alert(10/3);//3.3333333333333335</script>

(3)Boolean

<script type="text/javascript">/** 1.JS中Boolean類型有2個值:true和false;* 2.在Boolean類型中有一個函數叫做:Boolean()* 語法格式:Boolean(數據)* Boolean()函數的作用是將非布爾類型轉換成布爾類型。* */var username="Jack";/*if(Boolean(username)){alert("歡迎你"+username);}else {alert("用戶名不能為空")}*/if(username){//可以省略,自動調Boolean函數轉換成boolean類型alert("歡迎你"+username);}else {alert("用戶名不能為空")}//規律:“有”就轉換成true,"沒有"就轉換成falsealert(Boolean(23));//truealert(Boolean(0));//falsealert(Boolean(""));//falsealert(Boolean("acdl"))//truealert(Boolean("null"));//falsealert(Boolean(NaN));//falsealert(Boolean("undefined"));//falsealert(Boolean(Infinity));//true//無限循環while (10/3){alert("啊哈哈");}</script>

(4)String(常用函數)

  • 第一種:var s = “abc”;
  • 第二種:(使用JS內置的支持類String):var s2=new String(“abc”);
<script type="text/javascript">/**1.String類型:可以使用雙引號,也可以使用單引號;* 2.JS當中,怎么創建字符串對象?* 兩種方式:* 第一種:var s = "abc";* 第二種:(使用JS內置的支持類String):var s2=new String("abc");* 需要注意:String是一個內置類,可以直接用,String的父類是Object。* 3.無論小String還是大String(Object),他們的屬性和函數都是通用的。* 4.關于String類型的常用屬性和函數?* *常用屬性:length獲取字符串長度* *常用函數:* indexOf--獲取指定字符串在當前字符串中第一次出現處的下標* lastIndexOf--獲取指定字符串在當前字符串中最后一次出現處的下標* replace--替換* substr--截取子字符串* substring--截取子字符串* toLowerCase--轉換成小寫* toUpperCase--轉換成大寫* split--拆分字符串* *///小String(屬于原始類型String)var x="avd";alert(typeof x);//string//大String(屬于Object類型)var u=new String("axc");alert(typeof u);//object//獲取字符串的長度,lengthalert(x.length);//3alert(u.length)//3//indexOfalert("http://www.baidu.com".indexOf("http"));//0alert("http://www.baidu.com".indexOf("https"));//-1,不包含//判斷一個字符串中是否包含某個子字符串?alert("http://www.baidu.com".indexOf("https")>=0?"包含":"不包含");//lastIndexOfalert("我是一個中國人,你是誰".lastIndexOf("是"))//9,最后一個“是”下標是9//replace(只替換第一個)alert("name=value%name=value%name=value".replace("%","&"));//name=value&name=value%name=value//繼續調用replace方法,就會替換第“二”個;想全部替換需要使用正則表達式。alert("name=value%name=value%name=value".replace("%","&").replace("%","&"));//name=value&name=value&name=value//考點:經常問substr和substring的區別://substr(startIndex,length)alert("abcdefghijk".substr(2,4))//cdef,從2開始,取4個長度//substring(starIndex,endIndex)alert("abcdefghijk".substring(2,4))//cd,從2開始,不包括4下標。//toLowerCase--轉換成小寫alert("ABCDEF".toLowerCase());//abcdef//toUpperCase--轉換成大寫alert("ghtyr".toUpperCase());//GHTYR//split--拆分字符串,split(string,limit),string以什么字符拆分;limit拆分成幾組。alert("我的老師的名字的結尾的是飛字!".split("的"))//我,老師,名字,結尾,是飛字!alert("我的老師的名字的結尾的是飛字!".split("的",2))//我,老師</script>

(5)Object類型

JS中的Object類型:
1.Object類型是所有類型的超類,自定義的任何類型,默認繼承Object。
2.Object類包括哪些屬性?
* prototype屬性(常用的,主要是這個):作用是給類動態的擴展屬性和函數。
* constructor屬性
3.Object類包括哪些函數?
* toString()/valueOf()/toLocaleString()
4.在JS當中定義的類默認繼承Object,會繼承Object類中所有屬性以及函數。自己定義的類也有prototype屬性。

<script type="text/javascript">/** 5.在JS當中怎么定義類?怎么new對象?* *定義類的語法:* 第一種方式:* function 類名(形參){** }* 第二種方式:* 類名=function(形參){** }* *創建對象的語法:* new 構造方法名(實參)//構造方法名和類名一致* */function sayHello() {alert("hello,teacher")}//這種方式調用就是把sayHello當做函數sayHello();//hello,teacher//這種方式就表示把sayHello當做一個類來創建對象var obj=new sayHello();//hello,teacher; obj是一個引用,保存內存地址指向堆中的對象alert(obj);//結果是[object Object]//JS中的類的定義,同時又是一個構造函數的定義//在JS中類的定義和構造函數的定義是放在一起完成的。function User(a,b,c) {//a b c是形參,屬于局部變量。//聲明屬性(this表示當前對象),User類中有三個屬性:sno/sname/sagethis.sno=a;this.sname=b;this.sage=c;}//創建對象var u1=new User(111,"吳京",45);//訪問對象屬性alert(u1.sno);alert(u1.sname);alert(u1.sage);//訪問一個對象的屬性,還可以使用這種語法var u2=new User(222,"沙溢",43);alert(u2["sno"]);alert(u2["sname"]);alert(u2["sage"]);Product=function (pno,pname,price) {//屬性this.pno=pno;this.pname=pname;this.price=price;//函數this.getPrice=function () {return this.price;}}var pro=new Product(123,"香蕉",2.4);alert(pro.pno+","+pro.pname+","+pro.price);//123,香蕉,2.4var pri=pro.getPrice();alert(pri);//2.4//Object的子類Product可以通過prototype這個屬性來給類動態擴展屬性以及函數。Product.prototype.getName=function () {return this.pname;}//調用后期擴展的getName()函數var pname=pro.getName();alert(pname);//香蕉//給String類型擴展一個函數String.prototype.suiyi=function () {alert("這是給Object的子類String類型擴展的suiyi函數");}"字符串".suiyi();//當JS構造函數的參數數量與屬性不一致,也可以調,這是JS的弱類型。alert(new Product(189).pno+","+new Product(189).pname+","+new Product(189).price)//189,undefined,undefined</script>

(6)null

<script type="text/javascript">//null NaN undefined 數據類型不一致alert(typeof null);//Null類型 objectalert(typeof NaN);//Number類型 numberalert(typeof undefined);//Undefined類型 undefined//null和undefinedkey可以等同alert(null==NaN);//falsealert(null==undefined)//truealert(undefined==NaN)//false//JS當中有兩個比較特殊的運算符//==(等同運算符:只判斷值是否相等)//===(全等運算符:既判斷值是否相等,又判斷數據類型是否相等)alert(null===NaN);//falsealert(1==true)//truealert(1===true)//false,1是Number類型,true是Boolean類型</script>

4. 事件

JS的常用事件:
* (1)blur失去焦點,focus獲得焦點;
* (2)change下拉列表選中項改變,或文本框內容改變;
* (3)select文本被選定
* (4)load頁面加載完畢
* (5)click鼠標單擊,dblclick鼠標雙擊
* (6)keydown鍵盤按下,keyup鍵盤彈起
* (7)mousedown鼠標按下,mouseover鼠標經過,mousemove鼠標移動,mouseout鼠標離開,mouseup鼠標彈起
* (8)reset表單重置,submit表單提交
*
* 任何事件都會對應一個事件句柄,事件句柄就是在事件前面加on,
* 事件句柄以屬性的形式存在

(1)事件注冊的2種方式:

<script type="text/javascript">function sayHello() {alert("hello,美好世界")}</script><!--注冊事件的第一種方式:直接在標簽中使用事件句柄--><input type="button" value="hello" ondblclick="sayHello()"/><!--鼠標雙擊出結果--><input type="button" value="hello2" id="mybtn"><input type="button" value="hello3" id="mybtn1"><input type="button" value="hello4" id="mybtn2"><script type="text/javascript">/** 第二種注冊事件的方式:使用JS代碼塊完成事件的注冊。* 第一步:先獲取這個按鈕對象(document和window一樣是全部小寫,內置對象,可以直接用,document就代表整個HTML頁面)。* document代表瀏覽器窗口下的文本,window代表瀏覽器窗口。* 第二步:給按鈕對象的事件句柄屬性賦值* */function doSome() {alert("注冊事件的第二種方式")}//第一步:getElementById通過id獲取元素,document和window一樣//以后btnObj節點對象就代表<input type="button" value="hello2" id="mybtn">,可以調用其下屬性。var btnObj=document.getElementById("mybtn");//給按鈕onclick屬性賦值btnObj.onclick=doSome;//注意:別加小括號.doSome()錯誤寫法//這行代碼的含義是,將回調函數doSome注冊到click事件上var btnObj1=document.getElementById("mybtn1");btnObj1.onclick=function () {//這個函數沒有名字,叫做匿名函數,這也是回調函數。alert("test..........")}document.getElementById("mybtn2").onclick=function () {alert("test22222...")}</script>

(2)代碼執行順序

<body onload="ready()"><!--load事件是在頁面全部元素加載完畢之后才會發生--><script type="text/javascript">function ready() {//這個ready代表body οnlοad="ready()"document.getElementById("btn").onclick=function () {alert("hello JS!");}}</script><input type="button" value="hello" id="btn"/>

以后以下面代碼執行

<body> <script type="text/javascript">/*把body里的onload直接放到JS代碼塊中*1.頁面打開時,將a函數注冊給了load事件,* 2.頁面加載完畢之后,load事件發生了,此時執行回調函數a* 3.回調函數a執行的過程中,把b函數注冊給了id="btn1"的click事件* 4.當id="btn1"的節點發生click事件之后,b函數被調用并執行。*/window.onload=function () {//這個回調函數加做adocument.getElementById("btn1").onclick=function () {//這個回調函數叫做balert("hello 你好");}}//下面的window需要重新建一個,懶得建了,不允許2個重復的,否則后面覆蓋前面window.onload=function () {document.getElementById("btn3").onclick=function () {var mytext=document.getElementById("btn2");//一個節點對象中只要有的屬性都可以"."mytext.type="checkbox";}} </script> <input type="button" value="hello2" id="btn1"/><input type="text" id="btn2"/> <input type="button" value="將文本框修改為復選框" id="btn3"/> </body>

(3)捕捉鍵盤keydown事件

<script type="text/javascript">window.onload=function () {var usernameElt=document.getElementById("username")//回車鍵的值是13,ESC鍵的鍵值是27usernameElt.onkeydown=function (event) {//獲取鍵值//對于“鍵盤事件對象”來說,都有keyCode屬性用來獲取鍵值alert(event);//object KeyboardEventalert(event.keyCode);//13. 回車鍵的值是13if(event.keyCode==13){alert("正在進行驗證.....")}}}</script>

(4) void運算符

<head><meta charset="UTF-8"><title>JS的void運算符</title> </head> <body> <!---void運算符的語法:void(表達式)運算原理:執行表達式,但不返回任何結果。javascript:void(0)其中javascript:作用是告訴瀏覽器后面是一段JS代碼,以下程序的javascript:是不能省略的,否則href會把雙引號里當做路徑處理。 ---><a href="javascript:void(100)" onclick="window.alert('test code')">既保留住超鏈接的樣式,同時用戶點擊該超鏈接的時候執行一段JS代碼,但頁面還不能跳轉。</a> </body>

(5) 控制語句

<head><meta charset="UTF-8"><title>JS的控制語句</title> </head> <body><script type="text/javascript">/*1.if語句 2.switch 3.while 4.do...while..* 5.for循環 6.break語句 7.continue語句* 8.for...in語句 9.with語句* *///創建JS數組,數據類型不統一,元素的個數隨意var arr=[false,true,1,2,"abc",3.12];//遍歷數組for(var i=0;i<arr.length;i++){alert(arr[i]);}//for..in,數組下標for(var i in arr){alert(i);alert(arr[i]);}//for..in語句可以遍歷對象的屬性User=function (username,password) {this.username=username;this.password=password;}var u=new User("張三","123");alert(u.username+","+u.password);//張三,123alert(u["username"]+","+u["password"]);//張三,123for(var shuXinMing in u){alert(shuXinMing)//username password 屬性名alert(typeof shuXinMing)//string string shuXinMing是一個字符串alert(u[shuXinMing])//張三 123 本身就是string類型,不需要加“”}with(u){//u代替了u.username中的ualert(username+","+password)}</script> </body> </html>

總結

以上是生活随笔為你收集整理的JS基础篇2:的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。