主頁 > 企業開發 > 前端之js

前端之js

2020-10-13 20:26:36 企業開發

目錄
  • JavaScript簡介
  • js注釋
  • js的引入方式
  • js變數
    • 變數名的命名規范
    • js中常量
  • js中資料型別
    • 數值型別
    • 字符型別
      • 字串常用方法
      • 模板字串
    • 布林值(Boolean)
      • null和undefined
    • 物件
      • 陣列
      • 常用方法
      • forEach()
      • splice()
      • map()
  • 運算子
    • 算術運算子
    • 比較運算子
      • 邏輯運算子
      • 賦值運算子
  • 流程控制
    • if else
    • 多分支結構
    • switch
    • for回圈
    • 三元運算
  • 函式
    • 函式定義
    • 函式的全域變數和區域變數
  • 內置物件和方法
    • 自定義物件
    • Date物件
      • Date物件的方法
    • Json物件
    • RegExp物件

JavaScript簡介

JavaScript是前端的一門編程語言

node.js 支持前端js代碼可以跑在后端服務器上

JavaScript 是腳本語言
JavaScript 是一種輕量級的編程語言,

JavaScript 是可插入 HTML 頁面的編程代碼,

JavaScript 插入 HTML 頁面后,可由所有的現代瀏覽器執行,

js也叫ECMAScript

js注釋

// 單行注釋


/*
多行注釋1
多行注釋2
*/

js的引入方式

  1. script標簽內部直接書寫
  2. 通過script標簽src書寫,引入外部js檔案

js變數

宣告變數使用 var或let 變數名; 的格式來進行宣告 (var宣告的是全域有效,let可以只在區域有效)

var name = 'cwz'
let name = 'neo'

變數名的命名規范

  • JavaScript的變數名可以使用_,數字,字母,$組成,不能以數字開頭,
  • 不能用關鍵字作為變數名
  • 推薦使用駝峰體命名法
  • js代碼默認是以分號作為結束符,不寫也可以

js中常量

const用來宣告常量,不能被修改

const a=3.141412;
undefined
a=3
VM862:1 Uncaught TypeError: Assignment to constant variable.
    at <anonymous>:1:2

js中資料型別

數值型別

js擁有動態型別,可以型別轉換

var x;   // 此時是undefined
var x = 1;  // 此時x是數字
var x = "se";  // 此時x是字串

JavaScript不區分整型和浮點型,就只有一種數字型別,

var x = 1;
undefined
typeof x   // typeof 用來查看js資料型別
"number"

x = 12.22
12.22
typeof x
"number"

x = "qwe"
"qwe"
typeof x
"string"

還有一種NaN,表示不是一個數字(Not a Number),也是數值型別

字符型別

var name = 'cwz'
undefined
var info = 'qwe'
undefined
name + info
"cwzqwe"

注:js中推薦使用加號做字串的拼接

字串常用方法

方法 說明
.length 回傳長度
.trim() 只能移除空白,不能移除其他
.trimLeft() 移除左邊的空白
.trimRight() 移除右邊的空白
.charAt(n) 回傳第n個字符
.concat(value, ...)
var a1 = 'hello'
var a2 = 'world'
a1.concat(a2)
< "helloworld"
拼接
.indexOf(substring, start) 按值取索引,找不到值回傳-1
.substring(from, to)
a1.substring(1)
"ello"
根據索引取后面全部
.slice(start, end) 切片
.toLowerCase() 小寫
.toUpperCase() 大寫
.split(delimiter, limit) 分割

模板字串

ES6中引入了模板字串,模板字串(template string)是增強版的字串,用反引號(`)標識,它可以當做普通字串使用,也可以用來定義多行字串,或者在字串中嵌入變數,

布林值(Boolean)

js中布林值全部小寫

var a = true;
var b = false;

與python類似,0、null、undefined、NaN、空字串都是false

null和undefined

  • null表示值是空,一般在需要指定或清空一個變數時才會使用,如 name=null;
  • undefined表示宣告一個變數但未初始化,沒有給他賦值

物件

JavaScript 中的所有事物都是物件:字串、數值、陣列、函式...此外,JavaScript 允許自定義物件,

JavaScript 提供多個內建物件,比如 String、Date、Array 等等,

物件只是帶有屬性和方法的特殊資料型別,

陣列

陣列物件的作用是:使用單獨的變數名來存盤一系列的值,類似于Python中的串列,

var a = [123, "ABC"];
console.log(a[1]);  // 輸出"ABC"

常用方法

方法 說明
.length 陣列的大小
.push(ele) 尾部追加元素
.pop() 獲取尾部的元素
.unshift(ele) 頭部插入元素
.shift() 頭部移除元素
.slice(start, end) 切片
.reverse() 反轉
.join(seq) 將陣列元素連接成字串
.concat(val, ...) 連接陣列
.sort() 排序
.forEach() 將陣列的每個元素傳遞給回呼函式
.splice() 洗掉元素,并向陣列添加新元素,
.map() 回傳一個陣列元素呼叫函式處理后的值的新陣列

forEach()

splice()

splice(index,howmany,item1,.....,itemX)

引數:

引數 描述
index 必需,規定從何處添加/洗掉元素, 該引數是開始插入和(或)洗掉的陣列元素的下標,必須是數字,
howmany 必需,規定應該洗掉多少元素,必須是數字,但可以是 "0", 如果未規定此引數,則洗掉從 index 開始到原陣列結尾的所有元素,
item1, ..., itemX 可選,要添加到陣列的新元素

map()

運算子

算術運算子

+ - * / % ++ --
var x=10;
var res1=x++;
var res2=++x;

res1;
10
res2;
12

這里由于的x++和++x在出現賦值運算式,x++會先賦值再進行自增1運算,而++x會先進行自增運算再賦值!

比較運算子

> >= < <= != == === !===
    
    
1 == “1”  // true  弱等于
1 === "1"  // false 強等于
//上面這張情況出現的原因在于JS是一門弱型別語言(會自動轉換資料型別),所以當你用兩個等號進行比較時,JS內部會自動先將
//數值型別的1轉換成字串型別的1再進行比較,所以我們以后寫JS涉及到比較時盡量用三等號來強制限制型別,防止判斷錯誤

邏輯運算子

&& || !   //與、或、非

賦值運算子

= += -= *= /=

流程控制

if else

var age = 20;
if (age > 18){
	console.log('成年了');
}else{
	console.log('未成年')
}
 成年了

多分支結構

var age = 23;
if (age > 23){
	console.log('猜大了');
}else if (age == 23){
	console.log('猜對了');
}else {
	console.log('猜小了');
}
猜對了

switch

var day = new Date().getDay();
switch (day) {
  case 0:
  console.log("Sunday");
  break;
  case 1:
  console.log("Monday");
  break;
default:
  console.log("...")
}
Sunday

switch中的case子句通常都會加break陳述句,否則程式會繼續執行后續case中的陳述句,

for回圈

for (var i=0; i<10; i++){
	console.log(i);
}
// 回圈列印0-9

三元運算

var a = 1;
var b = 2;
var c = a > b ? a : b
undefined
c
2
// 判斷條件 ?成立 :不成立

函式

函式定義

// 普通函式
function f1() {
	console.log('你好啊');
}
// 呼叫函式與python一樣  函式名()

// 有參函式

function f2(a,b){
	console.log(arguments);
	console.log(a,b)
}

// arguments能接收所有傳過來的引數,組成陣列的形式

// 帶回傳值的函式
function sum(a, b){
  return a + b;
}
sum(1, 2);   // 回傳3,呼叫函式


// 匿名函式
var sum = function(a, b){
  return a + b;
}
sum(1, 2);

// 立即執行函式
(function(a,b){
	return a + b;
}) (1,2)

補充:ES6中允許使用箭頭(=>)定義函式

var f = v => v;
// 等同于
var f = function(v){
  return v;
}



var f = () => 5;
// 等同于
var f = function(){return 5};

var sum = (num1, num2) => num1 + num2;
// 等同于
var sum = function(num1, num2){
  return num1 + num2;  //這里的return只能回傳一個值,如果想回傳多個值需要自己手動給他們包一個陣列或物件中
}

函式的全域變數和區域變數

區域變數

在JavaScript函式內部宣告的變數(使用 var)是區域變數,所以只能在函式內部訪問它(該變數的作用域是函式內部),只要函式運行完畢,本地變數就會被洗掉,

全域變數:

在函式外宣告的變數是全域變數,網頁上的所有腳本和函式都能訪問它,

變數生存周期:

JavaScript變數的生命期從它們被宣告的時間開始,

區域變數會在函式運行以后被洗掉,

全域變數會在頁面關閉后被洗掉

作用域

與python一樣

內置物件和方法

JavaScript的物件(Object)本質上是鍵值對的集合(Hash結構),但是只能用字串作為鍵,

其實就是字典

var dic = {'name': 'cwz', 'age': 20}

{name: "cwz", age: 20}

自定義物件

定義物件關鍵字是 new

var myObject = new Object();  // 創建一個myObject物件
myObject.username = 'cwz';  // myObject物件的username屬性
myObject.password = 123;  // myObject物件的password屬性

Date物件

// 不指定引數,類似于時間戳
var d1 = new Date();
console.log(d1.toLocaleString())  // 結果為:2019/11/17 下午12:17:47
console.log(d1.toLocaleDateString()) // 結果為:2019/11/17

下面是了解

//方法2:引數為日期字串
var d2 = new Date("2004/3/20 11:12");
console.log(d2.toLocaleString());
var d3 = new Date("04/03/20 11:12");
console.log(d3.toLocaleString());
//方法3:引數為毫秒數
var d3 = new Date(5000);
console.log(d3.toLocaleString());
console.log(d3.toUTCString());

//方法4:引數為年月日小時分鐘秒毫秒
var d4 = new Date(2004,2,20,11,12,0,300);
console.log(d4.toLocaleString());  //毫秒并不直接顯示

Date物件的方法

var d = new Date(); 
//getDate()                 獲取日
//getDay ()                 獲取星期
//getMonth ()               獲取月(0-11)
//getFullYear ()            獲取完整年份
//getYear ()                獲取年
//getHours ()               獲取小時
//getMinutes ()             獲取分鐘
//getSeconds ()             獲取秒
//getMilliseconds ()        獲取毫秒
//getTime ()                回傳累計毫秒數(從1970/1/1午夜)

注意:getMonth () 獲取月份是0-11

Json物件

var obj = {'username':'cwz', 'password':'123', 'num': null}

// 物件轉化為Json字串
var res1 = JSON.stringify(obj)   // "{"username":"cwz","password":"123","num":null}"


// JSON字串轉換成物件
var res2 = JSON.parse(res1)  // {username: "cwz", password: "123", num: null}

RegExp物件

// 定義正則運算式兩種方式
var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9]{5,11}");
var reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,9}$/;

// 正則校驗資料
reg1.test('jason666')
reg2.test('jason666')

/*第一個注意事項,正則運算式中不能有空格*/ 

// 全域匹配
var s1 = 'egondsb dsb dsb';
s1.match(/s/)
s1.match(/s/g)
var reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,9}$/g
reg2.test('egondsb');
reg2.test('egondsb');
reg2.lastIndex;
/*第二個注意事項,全域匹配時有一個lastIndex屬性*/

// 校驗時不傳引數
var reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,9}$/
reg2.test();
reg2.test(undefined);

var reg3 = /undefined/;
reg3.test();

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

標籤:JavaScript

上一篇:NTP授時服務器(北斗授時產品)在廣播電視系統里的應用

下一篇:巧妙利用參考,將陣列轉換成樹形陣列

標籤雲
其他(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