主頁 > 企業開發 > JavaScript(1) -- JS入門

JavaScript(1) -- JS入門

2020-09-28 18:34:59 企業開發

1.   JavaScript介紹

JavaScript是屬于HTML與Web的解釋性編程語言,也是一種以函式優先的弱型別輕量級的腳本語言,無需進行預編譯即可與HTML前端頁面進行行為互動,支持跨平臺運行,可在多種平臺下(如Windows、Linux、Mac、Android、iOS等),目前JavaScript被廣泛地應用于Web前端Html實作頁面互動、實作瀏覽器頁面事件回應、前端資料驗證、檢驗訪客瀏覽器資訊、控制cookies的創建與修改、基于Node.js技術進行服務器端編程,

2.   JavaScript基本語法

2.1. JavaScript的三種定義方式

JS一般有三種定義的方式:

①    寫在<a>標簽的href屬性內;

②    寫在<script>標簽內;

③    單獨寫一個JS檔案,使用外連的方式引入;

下面直接給出代碼示例以區分這三種方式的不同:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta charset="UTF-8">
    <title>三種JS的寫法</title>
    <!--第二種寫法:寫在script代碼塊中-->
    <script type="text/javascript">
        alert("我在塊里面!")
    </script>
    <!--第三種寫法:單獨寫一個js檔案,在src中引入.js檔案-->
    <script type="text/javascript" src="./js/01hello.js"></script>
</head>
<body>
    <!--
        JS的三種寫法:
        ①寫在標簽內;
        ②寫在script標簽內;
        ③單獨寫一個JS檔案
    -->
<!--第一種寫法:表示的是偽協議,給瀏覽器看,偽協議之后的代碼當做JS代碼執行-->
<a href="javascript:console.debug('點你就點你')">點擊我</a>
</body>
</html>

2.2.  JavaScript的識別符號

JavaScript中的識別符號與Java中識別符號的定義是一樣的,識別符號是為了標識程式中諸如方法變數等元素而采用的命名,

所有的識別符號必須遵從以下規則:

  •  識別符號是由字母、數字、下劃線(_)和美元符號($)構成的字符序列,
  •  識別符號必須以字母、下劃線(_)或美元符號($)開頭,不能以數字開頭,
  •  識別符號不能是JavaScript中的保留字與關鍵字,
  •  識別符號不能是true、false或null,
  •  識別符號可以為任意長度,

合法的識別符號舉例:indentifier、username、user_name、_userName、$username;

非法的識別符號舉例:int、98.3、Hello World,

JavaScript是嚴格區分大小寫的,所以area、Area和AREA是不同的識別符號,使用識別符號時應該使用具有描述性的識別符號以提高程式的可讀性,

2.3.  關鍵字與保留字

關鍵字包含:

break  continue  debugger  dowhile  for  function  ifelse  return  switch

trycatch var case break case continue default delete do finally in

instanceof new return this throw typeof void with

保留字包含:

abstract  Boolean  byte  char  class  const   double  enum  export  extends
final float goto implements import int interface long package private
protected public short static super synchronized throws transient volatile

2.4.  分割符與注釋

JavaScript每條執行陳述句以分號”;”分隔,以分號分隔在實際執行程序中不是必需的(去除”;”可以執行),但是在實際撰寫代碼程序中強烈建議加上分號!

var a = 5;
var b = 6;
var c = a + b;

如果有分號分隔,允許在同一行寫多條執行陳述句:

var a = 5;b = 6;c = a + b;
console.debug(a);  //5
console.debug(b);  //6
console.debug(c);  //11

JavaScript注釋用于解釋JavaScript代碼,增強其可讀性,JavaScript注釋也可以用于在測驗替代代碼時阻止執行,

JavaScirpt中主要有三種注釋型別:

單行注釋、多行注釋、檔案注釋

 

單行注釋以//開頭,任何位于//與行末之間的文本都會被JavaScript忽略(不會執行),

多行注釋以/*開頭,以*/結尾,任何位于/*與*/之間的文本都會被JavaScript忽略,

檔案注釋以/**開頭,以*/結尾,任何位于/**與*/之間的文本都會被JavaScript忽略,

//單行注釋
var x = 5;      // 宣告 x,為其賦值 5
var y = x + 2;  // 宣告 y,為其賦值 x + 2

/*
 多行注釋
 下面的代碼會改變
 網頁中
 id = "myH" 的標題
 以及 id = "myP" 的段落:
*/
document.getElementById("myH").innerHTML = "我的第一張頁面";
document.getElementById("myP").innerHTML = "我的第一個段落,";

/**
 檔案注釋
 一般用于公司簽名抬頭標明產品檔案型別
 */

2.5.  空白字符

JavaScript會忽略多個空格,我們可以在腳本陳述句中添加多個空格間隔陳述句代碼,以增強程式的可讀性,

下面這兩行是相等的:

var person = "Bill";
var person="Bill"; 

在運算子旁邊(= + - * /)添加空格是個好習慣:

var x = y + z;

3.   JavaScript變數

JavaScript變數是用于存盤資料值的一個標識,指向具體的記憶體地址,保存對應的值或者物件地址值,

變數宣告首先要遵循識別符號命名原則,并且JavaScript宣告變數要使用var關鍵字,比如:

var name;
console.debug(name);  //列印空字符
console.debug(typeof(name)); //string

宣告變數的同時可以為變數賦值,并且在之后改變該變數的值,注意:不能改變變數的型別了,比如:

var name = "張三";
console.debug(name); //張三
console.debug(typeof(name)); //string
name = true;
console.debug(name); //true
console.debug(typeof(name)); //string

此外,JavaScript中還允許不事先宣告變數而直接使用,比如:

num = 1234;
console.debug(num); //1234

注意:JavaScript定義變數無需指定變數的型別,任何型別都可以使用var關鍵字宣告,

4.   JavaScript資料型別

JavaScript中資料型別包含:字串型、數值型、布爾型、陣列型、物件型別等,

①    字串型(string)

字串(或文本字串)是一串字符,比如:”Bill Gates”,

字串被引號包圍,你可以使用單引號或者雙引號:

var carName = "Porsche 911";   // 使用雙引號
var carName = 'Porsche 911';   // 使用單引號

也可以在字串內使用引號,只要這些引號與包圍的字串的引號不匹配:

var answer = "It's alright";             // 雙引號內的單引號
var answer = "He is called 'Bill'";    // 雙引號內的單引號
var answer = 'He is called "Bill"';    // 單引號內的雙引號

②    數值型(number)

JavaScript只有一種數值型別,寫數值時用不用小數點均可,

var x1 = 34.00;     // 帶小數點
var x2 = 34;        // 不帶小數點

超大或超小的數值可以用科學計數法來表示,

var num1 = 123e5;      // 12300000
var num2 = 123e-5;     // 0.00123

③    布爾型(boolean)

JavaScript布林值只有兩個值:true或者false,

var res = true;
console.debug(res); //true
console.debug(typeof(res)); //boolean

④   陣列型

JavaScript陣列用方括號表示,陣列專案元素用逗號分隔,如下代碼宣告了一個名為cars的陣列,包含三個元素(汽車品牌):

var arr = ["Porsche", "Volvo", "BMW"];
console.debug(arr.length); //3
console.debug(arr[0]); //陣列索引從0開始,到陣列長度-1結束,取值使用arr[索引位置];Porsche
console.debug(arr[arr.length-1]); //BMW

⑤    物件型別

JavaScript物件是使用花括號來表示,

物件屬性是name:value鍵值對,用逗號分隔開,宣告一個物件型別并使用:

//物件型別
var person = {
   firstName : "Bill",
   lastName  : "Gates",
   age       : 62,
   eyeColor  : "blue"
};
//物件取值:使用物件.屬性取值
console.debug(person.firstName + " is " + person.age + " years old"); //Bill is 62 years old

4.1. typeof運算子

使用typeof可以確定JavaScript變數的型別:

typeof運算子會回傳變數或運算式的型別:

typeof運算子可以回傳 以下原始型別之一:

  • string
  • number
  • boolean
  • object
  • undefined
var name = "張三";
typeof name; //string
typeof 3.14  // 回傳 "number"
typeof true // 回傳 "boolean"
typeof x    // 回傳 "undefined" (假如 x 沒有值)
var arr = ["Porsche", "Volvo", "BMW"];
typeof arr; //object

同時在處理復雜資料時,typeof運算子可用回傳以下兩種型別之一:

  • function
  • object

typeof運算子會把物件、陣列或null回傳object;

typeof運算子會把函式回傳function

typeof null     // 回傳 "object"
typeof function myFunc(){}  // 回傳 "function"

4.2. Undefined/Null/空值

①    undefined

在JavaScript中,沒有值的變數,即變數初始化沒有賦值,那么其值就是undefined,typeof也回傳undefined,

var person;
console.debug(person); //回傳undefined

②    Null

在JavaScript中,null的資料型別是物件,

var person = null;
console.debug(person); //null
console.debug(typeof person); //object

undefined與null的區別:

undefined與null的值相等,但是型別不相等;

typeof undefined       // undefined
typeof null             // object
null === undefined    // false
null == undefined     // true

③    空值

空值表示字串變數的值為空字串,空的字串既有值也有型別,

var str = "";
console.debug(str); //""
console.debug(typeof str); //string

5.   JavaScript函式

JavaScript函式是被設計為執行特定任務的代碼塊,JavaScript函式會在某代碼呼叫它時被執行,

5.1. JavaScript函式語法

JavaScript函式通過function關鍵詞進行定義,其后是函式名和括號(),

函式名可包含字母、數字、下劃線和美元符號(規則與變數名相同),

具體的示例如下:

function 函式名(…引數args){
    方法體—執行代碼
}

函式的作用:避免代碼在頁面加載的時候就執行了,并且一次定義,多次使用(呼叫),

5.2. 函式回傳值

JavaScript函式方法體中使用return來回傳此函式被呼叫后的執行結果,在函式中通常會計算出執行結果,回傳值會由return回傳呼叫者,而在function函式上無需宣告函式回傳型別(JS的弱型別的靈活性),

示例:

function getMsg() {
    var msg = "隨便回傳一個字串吧";
    return msg;
}
console.debug(getMsg()); //隨便回傳一個字串吧
console.debug(getMsg); //? getMsg() { var msg = "隨便回傳一個字串吧"; return msg;}

函式回傳呼叫需要使用:函式名()來呼叫,而單獨使用函式名則會回傳整個函式體,

5.3. 區域變數與全域變數

在JavaScript函式中宣告的變數,會成為函式的區域變數,區域變數只能在函式內部訪問,

由于區域變數只能被其函式識別,因此可以在不同函式中使用相同名稱的變數,

區域變數在函式開始時創建,在函式完成時被洗掉,

全域變數是定義在函式體外部的變數,與區域變數無關,可以全域使用,但是如果在函式體內部的區域變數與全域變數名相同,那么在該函式被呼叫后可能會改變該全域變數的值,

示例如下:

/**
* 1.JS中的全域與區域變數的定義
*/
var str = "全域變數";

function showStr() {
   str = "區域變數";
   console.debug(str);
}

showStr();  //區域變數
console.debug(str); //區域變數,str整體的值進入到showStr()方法中被改變

console.debug("================分割線==================")

var str2 = "全域變數2";

function showStr2() {
   var str2 = "區域變數2";
   console.debug(str2);
}

showStr2();  //區域變數2
console.debug(str2); //全域變數2,定義在showStr2()函式中的str2變數已經執行完畢被銷毀

6.   更多

本節JavaScript(1) – JS入門主要針對JS初學知識體系中常用知識進行匯總,省略了JS輸出列印、JS運算子、JS流程控制部分的說明(這部分比較簡單,和Java語言也大體型別),簡單知識就不再一一累述,學習更多完整的JavaScript入門知識體系請詳見W3shool網址,本部分知識參考W3school網址:

https://www.w3school.com.cn/js/index.asp

學習章節:JS教程 —— JS函式部分,后續將陸續匯總更新更多JavaScript章節自我學習匯總內容,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/134941.html

標籤:JavaScript

上一篇:使用vue-lazyload實作圖片懶加載

下一篇:js 模擬鍵盤

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • IEEE1588PTP在數字化變電站時鐘同步方面的應用

    IEEE1588ptp在數字化變電站時鐘同步方面的應用 京準電子科技官微——ahjzsz 一、電力系統時間同步基本概況 隨著對IEC 61850標準研究的不斷深入,國內外學者提出基于IEC61850通信標準體系建設數字化變電站的發展思路。數字化變電站與常規變電站的顯著區別在于程序層傳統的電流/電壓互 ......

    uj5u.com 2020-09-10 03:51:52 more
  • HTTP request smuggling CL.TE

    CL.TE 簡介 前端通過Content-Length處理請求,通過反向代理或者負載均衡將請求轉發到后端,后端Transfer-Encoding優先級較高,以TE處理請求造成安全問題。 檢測 發送如下資料包 POST / HTTP/1.1 Host: ac391f7e1e9af821806e890 ......

    uj5u.com 2020-09-10 03:52:11 more
  • 網路滲透資料大全單——漏洞庫篇

    網路滲透資料大全單——漏洞庫篇漏洞庫 NVD ——美國國家漏洞庫 →http://nvd.nist.gov/。 CERT ——美國國家應急回應中心 →https://www.us-cert.gov/ OSVDB ——開源漏洞庫 →http://osvdb.org Bugtraq ——賽門鐵克 →ht ......

    uj5u.com 2020-09-10 03:52:15 more
  • 京準講述NTP時鐘服務器應用及原理

    京準講述NTP時鐘服務器應用及原理京準講述NTP時鐘服務器應用及原理 安徽京準電子科技官微——ahjzsz 北斗授時原理 授時是指接識訓通過某種方式獲得本地時間與北斗標準時間的鐘差,然后調整本地時鐘使時差控制在一定的精度范圍內。 衛星導航系統通常由三部分組成:導航授時衛星、地面檢測校正維護系統和用戶 ......

    uj5u.com 2020-09-10 03:52:25 more
  • 利用北斗衛星系統設計NTP網路時間服務器

    利用北斗衛星系統設計NTP網路時間服務器 利用北斗衛星系統設計NTP網路時間服務器 安徽京準電子科技官微——ahjzsz 概述 NTP網路時間服務器是一款支持NTP和SNTP網路時間同步協議,高精度、大容量、高品質的高科技時鐘產品。 NTP網路時間服務器設備采用冗余架構設計,高精度時鐘直接來源于北斗 ......

    uj5u.com 2020-09-10 03:52:35 more
  • 詳細解讀電力系統各種對時方式

    詳細解讀電力系統各種對時方式 詳細解讀電力系統各種對時方式 安徽京準電子科技官微——ahjzsz,更多資料請添加VX 衛星同步時鐘是我京準公司開發研制的應用衛星授時時技術的標準時間顯示和發送的裝置,該裝置以M國全球定位系統(GLOBAL POSITIONING SYSTEM,縮寫為GPS)或者我國北 ......

    uj5u.com 2020-09-10 03:52:45 more
  • 如何保證外包團隊接入企業內網安全

    不管企業規模的大小,只要企業想省錢,那么企業的某些服務就一定會采用外包的形式,然而看似美好又經濟的策略,其實也有不好的一面。下面我通過安全的角度來聊聊使用外包團的安全隱患問題。 先看看什么服務會使用外包的,最常見的就是話務/客服這種需要大量重復性、無技術性的服務,或者是一些銷售外包、特殊的職能外包等 ......

    uj5u.com 2020-09-10 03:52:57 more
  • PHP漏洞之【整型數字型SQL注入】

    0x01 什么是SQL注入 SQL是一種注入攻擊,通過前端帶入后端資料庫進行惡意的SQL陳述句查詢。 0x02 SQL整型注入原理 SQL注入一般發生在動態網站URL地址里,當然也會發生在其它地發,如登錄框等等也會存在注入,只要是和資料庫打交道的地方都有可能存在。 如這里http://192.168. ......

    uj5u.com 2020-09-10 03:55:40 more
  • [GXYCTF2019]禁止套娃

    git泄露獲取原始碼 使用GET傳參,引數為exp 經過三層過濾執行 第一層過濾偽協議,第二層過濾帶引數的函式,第三層過濾一些函式 preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'] (?R)參考當前正則運算式,相當于匹配函式里的引數 因此傳遞 ......

    uj5u.com 2020-09-10 03:56:07 more
  • 等保2.0實施流程

    流程 結論 ......

    uj5u.com 2020-09-10 03:56:16 more
最新发布
  • 使用Django Rest framework搭建Blog

    在前面的Blog例子中我們使用的是GraphQL, 雖然GraphQL的使用處于上升趨勢,但是Rest API還是使用的更廣泛一些. 所以還是決定回到傳統的rest api framework上來, Django rest framework的官網上給了一個很好用的QuickStart, 我參考Qu ......

    uj5u.com 2023-04-20 08:17:54 more
  • 記錄-new Date() 我忍你很久了!

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 大家平時在開發的時候有沒被new Date()折磨過?就是它的諸多怪異的設定讓你每每用的時候,都可能不小心踩坑。造成程式意外出錯,卻一下子找不到問題出處,那叫一個煩透了…… 下面,我就列舉它的“四宗罪”及應用思考 可惡的四宗罪 1. Sa ......

    uj5u.com 2023-04-20 08:17:47 more
  • 使用Vue.js實作文字跑馬燈效果

    實作文字跑馬燈效果,首先用到 substring()截取 和 setInterval計時器 clearInterval()清除計時器 效果如下: 實作代碼如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta ......

    uj5u.com 2023-04-20 08:12:31 more
  • JavaScript 運算子

    JavaScript 運算子/運算子 在 JavaScript 中,有一些運算子可以使代碼更簡潔、易讀和高效。以下是一些常見的運算子: 1、可選鏈運算子(optional chaining operator) ?.是可選鏈運算子(optional chaining operator)。?. 可選鏈操 ......

    uj5u.com 2023-04-20 08:02:25 more
  • CSS—相對單位rem

    一、概述 rem是一個相對長度單位,它的單位長度取決于根標簽html的字體尺寸。rem即root em的意思,中文翻譯為根em。瀏覽器的文本尺寸一般默認為16px,即默認情況下: 1rem = 16px rem布局原理:根據CSS媒體查詢功能,更改根標簽的字體尺寸,實作rem單位隨螢屏尺寸的變化,如 ......

    uj5u.com 2023-04-20 08:02:21 more
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 08:01:50 more
  • 如何在 vue3 中使用 jsx/tsx?

    我們都知道,通常情況下我們使用 vue 大多都是用的 SFC(Signle File Component)單檔案組件模式,即一個組件就是一個檔案,但其實 Vue 也是支持使用 JSX 來撰寫組件的。這里不討論 SFC 和 JSX 的好壞,這個仁者見仁智者見智。本篇文章旨在帶領大家快速了解和使用 Vu ......

    uj5u.com 2023-04-20 08:01:37 more
  • 【Vue2.x原始碼系列06】計算屬性computed原理

    本章目標:計算屬性是如何實作的?計算屬性快取原理以及洋蔥模型的應用?在初始化Vue實體時,我們會給每個計算屬性都創建一個對應watcher,我們稱之為計算屬性watcher ......

    uj5u.com 2023-04-20 08:01:31 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:01:10 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:00:32 more