整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          JavaScript ECMAScript語法概括「

          JavaScript ECMAScript語法概括「思維導圖」


          avaScript ECMAScript語法思維導圖見文章底部


          JavaScript是什么 ?

          • JavaScript是一門腳本語言
            腳本語言:不需要編譯,直接運行(js,python...)
            編譯語言:需要把代碼翻譯成計算機所認識的二進制語言,才能運行(c,c++,java...)
          • JavaScript是一門基于對象的語言
            基于 而不是 面向
            JavaScript可以模擬其他語言的特性(封裝、繼承、多態)
          • JavaScript是一門動態類型的語言
          • JavaScript是一門弱類型的語言
          • JavaScript是一門解釋性的語言

          JavaScript能做什么?

          • 前端開發
          • 后端開發
          • 底層
          • 操作系統開發
          • 大數據
          • 區塊鏈
          • 人工智能
          • ... js無所不能

          引入js的兩種方式

          • 內聯
            在html中 body標簽內的最下方通過script標簽 編寫js代碼
            <script>var a=1;</script>
          • 外聯
            引入外部文件 在html中 body標簽內的最下方通過script標簽的src屬性引入文件
            <script src="./index.js"></script>

          為什么要有變量?

          為了存儲和復用一個數據,方便修改

          當聲明一個變量的時候 var a=10 ,會在內存中開辟以一個空間 存放變量名和變量值 ,會將變量和值存放到window對象中 a:10


          1. 全局變量

          全局作用域中的變量 可以在該腳本文件中的任何地方訪問到

          2. 局部變量

          局部作用域中的變量 局部變量只能在該函數中訪問到

          注意

          在局部作用域中(函數中)聲明變量 如果未加關鍵字 var || let || const 這個變量就會變為隱式全局變量

          function a(){
            num=1;
          }=>
          var num;
          function a(){
            num=1;
          }
          
          /*只有num1 是局部變量 , num2 和 num3 是隱式全局變量*/
          function a(){
            var num1=num2=num3=100;
          }=>
          var num2;
          var num3;
          function a(){
            var num1=100;
            num2=100;
            num3=100;
          }
          

          JavaScript代碼規范以及變量命名

          聲明關鍵詞 var let const 變量名區分大小寫

          命名規范

          一般以字母、$、下劃線、數字組成(不能以數字開頭) 不能使用系統關鍵詞和保留字 一般遵循駝峰命名法(第一個單詞首字面小寫后面單詞首字母大寫) 變量名需得有意義


          預解析

          JavaScript在執行的過程中,瀏覽器的js引擎會將代碼掃描一遍(預解析) 并把 **聲明式** 函數 和 變量 提升到 **該作用域** 的最頂端

          1. 變量預解析

          變量預解析只會將變量的聲明提升到該作用域的最前面

          console.log(a) // undefined
          var a=10;=>
          var a 
          console.log(a) // undefined
          a=10 
          

          2. 函數預解析

          變量預解析只會將變量的聲明提升到該作用域的最前面

          b()
          function b(){
          }=>
          function b(){
          }
          b()
          

          斷點調試

          直接在瀏覽器中Sources添加斷點 或者在編輯器中在語句之后添加 debugger




          數據類型


          什么是數據類型?

          計算機里面有很多數據,JS為了方便調試與使用,提供了一些對應的輔助方法,將它們做了歸類,就是數據類型。


          簡單數據類型


          1. Number

          1.1. 整數=> 正數 負數 1.2. 小數 1.3. NaN Not a Number=> 不是一個數字 判斷一個數字是否是非數字isNaN(x) 返回布爾值 true是一個非數字,false不是一個非數字

          isNaN(undefined) // true
          isNaN(null) // false
          

          NaN不等于任何值,包括它自己

          • 數值的取之范圍
          Infinity // 無窮大
          -Infinity // 無窮小
          Number.MAX_VALUE /*最大值*/
          Number.MIN_VALUE /*最小值*/
          
          • 運算符
            算數運算符

          +:加

          -:減 *:乘 /:除 %:求模 任何數除以0為無窮大 任何數-*/%字符串為NaN (除了+)

          復合運算符

          +=<a+=1=> a=a+1> -=<a-=1=> a=a-1> "=" <a=1=> a=a*1> (乘等于) /=<a/=1=> a=a/1> %=<a%=1=> a=a%1>=====兩個等于和三個等于的區別 兩個等于只對比值 三個等于對比值和數據類型

          自增自減運算符 a++ ++a a-- --a

          • 前置自增 ++a 先運算、再返回
          • 后置自增 a++ 先返回、再運算

          2. String

          2.1 字符串的長度str.length 2.2 字符串加號運算 會將數據與數據拼接字符串 + 任何數據類型=拼接之后的新的字符串


          3. Boolean

          true=> 1 false=> 0

          用布爾值來判斷條件真假


          4. Undefined

          未定義


          5. Null


          • undefined和null的區別

          null 表示一個值被定義了,定義為null undefined 表示一個值聲明了 但是未定義(未賦值) 所以設置一個值為null是合理的 設置一個值為undefined是不合理的 null==undefined // true null===undefined // false 說明 null 和 undefined 在轉boolean 的時候都為 0 值相同 所以==為true ,數據類型不一樣===為false


          復雜數據類型


          1. Array

          • 創建數組的方式

          new

          new Array()
          new Array(初始長度)
          new Array( 1 , 2 , 3 )
          

          字面量

          [ ]
          [ 1 , 2 , 3 ]
          
          • 數組的三個概念

          元素: 數組中的值就是元素 下標(索引): 下標從0開始 長度: length 數組的長度 從1開始

          • 遍歷數組

          正敘遍歷

          for(let i=0; i < arr.length; i++){
            /*代碼塊*/
          }
          

          倒敘遍歷

          for(let i=arr.length; i > 0; i--){
            /*代碼塊*/
          }
          
          • 棧和隊列操作

          棧操作 先進后出

          arr.unshift() /*從頭部放入*/
          arr.shift() /*從頭部取出*/
          
          arr.push(); /*從尾部放入*/
          arr.pop(); /*從尾部取出*/
          

          隊列操作 先進先出

          arr.unshift() /*從頭部放入*/
          arr.pop(); /*從尾部取出*/
          
          arr.push(); /*從尾部放入*/
          arr.shift() /*從頭部取出*/
          

          2. Function

          • 函數的聲明

          聲明式創建函數

          function fn (){
            //代碼塊
          }
          

          匿名方式創建函數

          let fn=function(){
            //代碼塊
          }
          

          函數對象

          let fn=new Function("形參","形參","代碼塊") /*前面的都是參數,最后面的參數是代碼塊*/
          
          • 函數的默認值
            形參默認值 形參=形參 || 默認值
          • 函數的調用
            函數名(實參列表)
          • return 關鍵字

          函數中 return 將數據給調用者 函數中遇到 return 直接跳出函數 后面代碼不執行 函數默認 return undefined

          • 函數的預解析

          只有聲明式的函數和變量才會預解析 先調用 -> 后聲明 在js執行的時候 瀏覽器會執行 預解析的操作

          預解析會把所有的 聲明式 創建的函數(包括變量) 提升到當前作用域的最頂端

          • 回調函數 函數作為參數傳遞 函數作為返回值
          • arguments 屬性

          函數內部的特殊屬性 用來保存實參列表 arguments 是一個 偽數組=> 不是數組 但是具有數組的特性(下標索引、長度、可以進行循環遍歷) 可以模擬函數重載=> 同一個函數,因為傳遞的實參數量不同,可以執行不同的操作

          • 工廠函數 和 構造函數
          /*工廠函數*/
          function createStr(name,age){
            let obj=new Object()
            obj.name=name
            obj.age=age
            obj.sayHi=function(){
              console.log(this.obj)
            }
            return obj
          }
          let obj1=createStr("藍海",11)
          
          /*構造函數*/
          function StuInFo(name,age){
            this.name=name
            this.age=age
            this.sayHi=function(){
              console.log(this.obj)
            }
          }
          let obj2=new StuInFo("藍海",11)
          

          構造函數相對于自定義類(class) 1.變量名一般用名詞,首字母大寫 2.構造函數中 不需要我們去創建對象、返回對象 3.構造函數一般 被 new 關鍵詞調用

          new 關鍵字 做的四件事

          創建空對象 將空對象 傳遞給 構造函數 里面的 this 調用構造函數 返回對象

          • 自調用函數

          聲明的時候直接調用執行

          (function("形參列表"){
            /*代碼塊*/
          })("實參列表")
          
          • 函數內存存放
            函數名存放在棧里面
            通過內存地址相關聯
            函數體和形參列表存放在堆里面

          3. Object

          • 創建對象的方式

          new

          let obj=new Object()
          ||
          let obj=new Object({
            name : "藍海",
            age : 11
          })
          

          字面量

          let obj={ }
          ||
          let obj={
            name : "藍海",
            age : 11
          }
          
          • 訪問對象中的屬性
            對象.屬性
            對象["屬性"]=> 注意 用中括號的方式訪問對象中的屬性 屬性名?加引號
            訪問對象中不存在的屬性=> undefined
          • 對象屬性操作
            添加屬性=> 直接對象 . 屬性名=屬性值
            刪除屬性=> delete 對象 . 屬性名 || delete 對象 . 方法名
          • 判斷一個對象中是否存在某個屬性或某個方法
            "屬性" in 對象=> "name" in obj
          • 對象中的 this

          對象中的this就是這個對象 可以通過this.屬性名 在對象的方法中訪問對象里的其他屬性或方法

          • 對象內存存放
            對象名存放在棧里面
            通過內存地址相關聯
            對象里面的方法和屬性存放在堆里面

          獲取數據類型

          1. typeof

          typeof檢查簡單數據類型[值類型] 返回的是 字符串類型的數據類型

          typeof(123)=> "number"
          /*注意點*/
          typeof(typeof(123))=> "string"
          typeof(null)=> "object"
          typeof(Infinity)=> "number"
          typeof(NaN)=> "number"
          typeof(new Date())=> "object"=> /*typeof檢查其他new出來的對象 都返回 object*/
          /*typeof() 復雜數據類型object、array 和 null 都返回 object
            typeof(function)=> function // 函數除外
          */
          

          2. instanceof

          instanceof檢查復雜數據類型[引用類型] 返回boolean值

          數據名 instanceof 數據類型 /*[Function||Object||Array]*/
          返回 false 或 true
          只能檢查復雜數據類型 簡單數據類型都返回false
          

          typeof 和 instanceof 的區別

          typeof用來檢測簡單數據類型 返回值是一個字符串的數據類型 instanceof用來檢測復雜數據類型 返回的是boolean值 如果用來檢測簡單數據類型都會返回false


          數據類型轉換


          1. 轉換為字符串

          str.tostring() 默認模式把變量轉換為字符串 || 基模式 String(str) 把特殊值轉換為字符串 String(undefined)=> “undefined” 加號拼接字符串

          2. 轉換為數組

          parseFloat(str) 把字符串轉換為浮點數(小數) parseInt(str) 把字符串轉換為整數

          {Number(str) 任何數據轉換為整數

          如果字符串截去開頭和結尾的空白字符后, 不是純數字字符串,那么最終返回NaN。 如果字符串中只包含了數字,(包括前面帶正號和負號), 則將其轉換為十進制數值,即"1"->1,”011“->11 如果字符串是空的""則返回0 如果字符串包含除了上面的格式之外的字符,則將其轉換為NaN

          boolean  true轉換為1 false轉換為0
          null 返回 0
          undefined 返回 NaN
          

          }

          3. 轉換為布爾值

          Boolean()

          將布爾字符串轉成布爾值 除了 0、false 、undefiend、NaN、null 轉換為false 其他都為true

          4. 轉義符

          console.log("轉義符的應用\"嗯") ->[轉義符的應用“嗯] 常用

          • \n 換行符
          • " 雙引號
          • ' 單引號
          • \ \ 斜杠\

          JavaScript內置對象

          戳一下 之前總結的常用內置對象博客


          條件判斷

          一些很簡單條件判斷這里就不說了哈

          1. 三元運算符

          條件 ? true : false

          2. switch-case

          /*相對于 if (a===1) 用來做全等判斷*/
          break /*每個case里面的代碼斷都要寫 break 否則會穿透*/
          /*合理使用switch穿透 <當多個case要執行的代碼需求一樣的時候>*/
          default /*如果case都不匹配的情況下 會執行 default 里面的代碼*/
          

          3. && || !

          && 與 一假則假 || 或 一真則真 ! 非 取反


          循環


          1. for

          for 循環體上面的 i 變量的作用域是全局作用域 如果在函數中使用就是局部作用域 一般建議使用let 關鍵詞來聲明 i

          for (let i=1;i < 10; i++){
            /*代碼塊*/
          }
          /*拆解為*/
          let i=1;
          for(;i<10;){
            /*代碼塊*/
            i++;
          }
          

          2. do while

          先執行do里面的代碼塊 再條件判斷

          do{
            /*代碼塊*/
          }while(boolean)
          

          3. while

          先條件判斷 再執行代碼塊

          while(boolean){
            /*代碼塊*/
          }
          

          do-while 與 while 的區別

          do-while 不管條件是否成立 都會執行一次do里面的代碼塊 然后再進行條件判斷 while 先進行條件判斷 再執行代碼塊

          3. for in

          遍歷對象

          for(let "屬性名" in "對象"){
            /*訪問對象中的屬性或方法*/ /*這里的屬性名已經是string類型 所以無需再加引號*/
            obj[name]=> /*對象[屬性名]*/
          }
          

          break 和 continue 的區別

          break 跳出整個循環 后面的循環不再執行 continue 跳出本次循環 繼續執行后面的循環


          xmind知識導圖

          總結

          若有感興趣的小伙伴,需要JavaScript ECMAScript語法思維導圖原圖的,關注我,私信回復獲?。?strong>ECMAScript語法思維導圖


          作者:藍海00
          鏈接:https://www.jianshu.com/p/5a5fb2b78d13

          者:楊朝清

          近日,針對網友“大理洱海步道電動車租賃年齡限制60歲太低、希望放寬”的建議,云南大理市洱海管理局回應稱,將認真調研此問題,配備由專職工作人員駕駛的觀光車、酒吧車等。

          應當說,涉事企業限制騎行年齡,是基于風險防范。一方面,出于騎行安全的考慮,國內大多數城市(包含大理市)在城市標準道路上行駛、運營的共享電動車高齡限制為65周歲;另一方面,由于該步道游客行人多、路況復雜,且部分路段彎道較多、多數路段臨靠湖邊不具備安裝護欄條件,對騎行用戶的車輛操控反應、身體素質要求更高,“騎行限制60周歲以下”隱伏著良苦用心。

          但一項為游客著想的舉措,為何會遭遇批評質疑?風險防范沒有原罪,卻也要把握好尺度。伴隨著生活品質的優化、醫療衛生的改善以及全民健康意識的提升,不少人即使年齡過了60周歲被貼上了“老年人”的身份標簽,也依然有著較好的身體素質。

          早在2020年10月,公安部門就放寬小型汽車駕駛證申請年齡,取消70周歲年齡上限。對70周歲以上人員考領駕駛證的,增加記憶力、判斷力、反應力等能力測試,保證身體條件符合安全駕駛要求?!膀T行限制60周歲以下”雖然初衷良善,但方法僵化、在操作過程中不夠人性化,最終導致效果不盡如人意。

          “騎行限制60周歲以下”不僅讓游客的利益訴求沒有得到滿足,也讓其權利與尊嚴受到了損害。害怕承擔責任、擔心攤上事兒,讓一些地方戴上了“有色眼鏡”,對老人群體另眼相看。

          打破年齡歧視,關鍵在于減少商家的后顧之憂,通過專門的責任保險實現商家、消費者和保險公司的良性互動,實現三方風險共防、責任共擔,以降低商家的壓力與風險。讓商家輕裝上陣,他們才會更有底氣和勇氣來接納老人群體。在做好風險防范的同時,商家也要為老人群體提供更加差異化、精準化、個性化的服務,贏得他們的青睞。

          在老齡化趨勢之下,“銀發經濟”成為一座市場富礦。只有兼顧多元主體的利益訴求,“騎行限制60周歲以下”的人為藩籬才會被打破。更進一步說,建設老年友好型社會,不僅需要公共部門的“制度補血”和社會層面的尊老敬老,也需要市場力量融入其中,讓老年人被溫柔相待。

          每一個人都終將老去,老年人的需求不能被忽略和漠視。樹立和培育積極的老齡觀,以積極的態度、政策、行動應對人口老齡化。當尊重和善待老年人蔚然成風,老年人的美好生活才會“有愛無礙”。(楊朝清)

          來源: 光明網-時評頻道

          024年8月1日,正是貴陽市小學新生入學報名的時候,家長們到學校依次排隊等待老師審核報名資料。

          突然,一名黑衣男子向正在審核資料的老師跪了下去,嘴里不停說道:“不要報警、不要報警......”然而,老師并沒有理會這名男子的請求,隨即撥通了報警電話。男子見勢不妙,起身迅速逃離了現場。

          接到報警后,西湖路派出所民警立即趕到學校,原來黑衣男子所帶來的報名資料有假!

          民警仔細核實,這男子帶的戶口簿是西湖路派出所的“高仿版”。雖然極其相似,但一些體現在戶口簿上的工作細節是仿不出來的。

          圖丨假戶口本

          民警再對該男子帶來的所有資料進行核實,發現皆是偽造。

          后調取學校監控溯源排查,入學報名的這段時間里,黑衣男子常到南明、云巖、觀山湖、花溪、清鎮等地的學校周邊出入。

          偵查民警開始著手調查,卻發現該男子居無定所、行蹤飄忽。偵查民警遂分組到各個學校周邊蹲守,伺機出擊。

          8月2日,在花溪區一小學,黑衣男子又出現在排隊的家長中,民警迅速出擊,將黑衣男子抓獲。

          圖丨犯罪嫌疑人陳某勇離開學校視頻截圖

          “昨天還在南明求放過,今天又到花溪排隊報名了!”

          經調查,黑衣男子名叫陳某勇,為了獲取家長“好處費”,自稱自己“有關系”“有捷徑”,能讓孩子讀上心儀的學校,因此,16名學生家長“慕名”而來。而為了讓新入學的學生能“報名成功”,陳某勇每天持多份假證輾轉于不同的學校。

          陳某勇曾因偽造使用國家證件被公安機關打擊過,出獄后又重操舊業。

          那么,這些假證從何而來呢?

          民警決定從陳某勇入手,尋線偵查,發現陳某勇經常開車到威清路一巷內老舊小區里。偵查民警立即對小區進行摸排,最后,目標鎖定小區頂樓的出租屋。

          如何神不知鬼不覺的情況下,打開頂樓出租屋的門呢?

          偵查民警分組輪流在該出租屋的入口處設伏,24小時蹲守。三伏天戶外氣溫三十幾度,站著不動也汗涔涔的;設伏的地方往往是樹下或樓道,蚊蟲特別多。面對惡劣天氣,偵查員始終努力堅持。

          圖丨偵查民警在嫌疑人家中查獲大量假證

          連續蹲守很長時間,頂樓的房門還是緊閉不開。直到8月6日上午,頂樓終于有人出來,民警隨即迅速打開頂樓房門、沖進屋子。

          民警卻被屋子里的場景震撼了!

          只見屋內的地板上、沙發上、茶幾上,甚至床上,都擺滿了大小不一、五顏六色的證書。

          有藍色的畢業證、墨綠的技術職稱證、黑色的資質認定證、白色的身份證、深褐的學士學位證、朱紅的戶口簿。還有許多偽造的印章,涉及全國各地許多單位。為了便于查找,還以省為分類標準,分門別類,用塑料袋裝好。

          這不只是一個偽造證件窩點了,這完全是一個加工廠。

          圖丨制造假證工具

          民警沖進去時,屋里的兩個人還在忙碌“作業”,制作假證。

          經審訊,男子陳某和女子李某某系夫妻,從外省赴筑務工,就想到制作假證獲取不義之財。為了擴大“銷路”,兩人還制作“東南亞證件集團公司”及聯系電話的名片,到處投遞。

          但為了規避公安機關打擊,兩人在屋里購置充足的食物,白天深居簡出,不大外出。但再狡猾的狐貍也會露出破綻來。

          圖丨西湖路派出所民警抓獲嫌疑人

          該案查獲用于制作假證的印刷品1.2萬份,印章387個,同時還查獲打印機、制證機多臺。

          目前,陳某勇、陳某、李某某已被公安機關刑事拘留,案件在進一步辦理中。

          警方提示

          不要相信任何的不學自通、不勞而獲。如果有,那制假的這對夫妻早就走上他們人生的巔峰了。

          不要拿讀書的大事,孩子一生的前途和使用假證的這條“捷徑”對賭,既毀了孩子心中家長的形象,又損失了錢財,還影響了孩子的學習?!百r了夫人又折兵”,何苦呢?

          希望相關部門把好關,一旦發現偽造證件,要及時報警處理。南明公安將重拳出擊,礪鋒亮劍,懲治犯罪。

          轉自:貴陽公安南明分局

          來源: 貴陽晚報


          主站蜘蛛池模板: 人妻无码一区二区三区| 麻豆AV一区二区三区| 国产精品亚洲综合一区| 精品不卡一区二区| 国内精品无码一区二区三区| 国产精品盗摄一区二区在线| 少妇无码一区二区二三区| 乱人伦一区二区三区| 无码精品尤物一区二区三区| 亚洲av无码一区二区三区乱子伦 | 亚洲日本乱码一区二区在线二产线| 在线观看国产一区亚洲bd| 麻豆亚洲av熟女国产一区二| 亚洲一区精品无码| 久久精品一区二区三区日韩| 国产精品无码一区二区在线 | 久久久久无码国产精品一区| 亚洲一区二区三区精品视频 | 国产熟女一区二区三区五月婷| 人妻少妇AV无码一区二区| 亚洲av成人一区二区三区| 丰满岳乱妇一区二区三区| 亚洲国产精品一区二区成人片国内| 亚洲大尺度无码无码专线一区| 视频一区二区中文字幕| 中文字幕精品一区二区| 一区二区三区人妻无码| 日韩在线一区二区三区视频| 久久国产精品最新一区| 国产精品福利一区二区| 亚洲Av高清一区二区三区| 国模私拍福利一区二区| 波多野结衣一区在线| 国产日韩精品一区二区三区在线| 另类一区二区三区| 国产精品亚洲一区二区在线观看| 国产99精品一区二区三区免费| 3d动漫精品成人一区二区三| 亚洲AV无码一区二区大桥未久| 国产福利电影一区二区三区,亚洲国模精品一区| 一区二区三区在线观看视频|