js基礎複習點

来源:https://www.cnblogs.com/suniny/archive/2019/04/15/10709641.html
-Advertisement-
Play Games

1.變數 var num=10; var num1,num2,num3; num1=10; num2=20; num3=30; var num1=10,num2=20,num3=30; 註意點: console.log(a); //報錯 var b; console.log(b); //undefi ...


1.變數
  var num=10;
   
  var num1,num2,num3;
  num1=10;
  num2=20;
  num3=30;
   
  var num1=10,num2=20,num3=30;
   
  註意點:
  console.log(a); //報錯
  var b;
  console.log(b); //undefined
  c=10;
  console.log(c); //10 會預設為全局變數,正常輸出,不推薦這種寫法
   
   
  2.數據類型
  var num=10; //數值類型
  var str='123'; //字元串類型
  var flag=true; //布爾類型
  var obj = {} //對象類型,預設值null
  var undefined = undefined; //未定義類型
   
  數據類型的轉換:
  轉換成字元串類型:
  str.toString() //大部分類型都有toString()方法
  String(str) //undefined,null等特殊值,需要用到String()
  轉換成數值類型:
  parseInt() 123.123abc // 123
  parseFloat() 123.123abc //123.123
  Number() 123.123abc //報錯
  轉換成布爾類型:
  Boolean()
  轉換為false的五種情況: 0 '' null undefined NaN
  其他的值都轉換為true: 非0和非空都為true
   
  隱式轉換:
  任意類型+ 字元串 會轉換為字元串
  任意的類型 - * / 會轉換為數值
   
  特殊情況:
  NaN : 不是一個數字
  isNaN(); 不是人
   
  數據類型檢測:
  typeof str
   
  3.條件判斷
  單向判斷
  if(條件滿足){
  //執行語句
  }
   
   
  雙向判斷
  if(條件滿足){
  //執行語句
  }else{
  //條件不滿足執行
  }
   
  多向判斷
  if(條件1滿足){
  //執行語句1
  }else if(條件2滿足){
  //執行語句2
  }else if(條件3滿足){
  //執行語句3
  }else{
  //以上都不滿足,執行這裡
  }
   
   
  精準判斷
  switch(條件){
  case 條件1:
  語句1;
  break;
  case 條件2:
  語句2;
  break;
  default:
  最後的語句;
  break;
  }
   
  三元運算符
  條件 ? 條件滿足返回 : 條件不滿足返回
   
  總結:
  if和switch的區別?
  if適合用於確定範圍的判斷
  switch適合用於確定的具體值判斷
  2.switch的註意點
  switch的條件比較是全等(===)
  break可以省略,但是會穿透執行.
   
  4.迴圈
  迴圈都必須有三個條件: 開始條件,條件範圍,條件增量
  for迴圈
  var sum=0;
  for(var i=1; i<=100; i++){
  sum+=i;
  }
   
  while迴圈
  var sum = 0;
  var i=1;
  while(i<=100){
  sum+=i;
  i++;
  }
   
   
  do-while迴圈
  var sum =0;
  var i=1;
  do{
  sum+=i;
  i++;
  }while(i<=100)
   
   
  總結:
  1.三種迴圈之間的區別?
  for適用於迴圈次數確定的情況,while和do-while適用於迴圈次數未知的情況
  while是先判斷,再執行, do-while是先執行一次,再判斷
   
  2.continue 和 break
  continue 跳過當前迴圈
  break 跳出整個迴圈
   
  5.數組
  var arr=[]; 數組的基本語法
  var arr[1,2,3,4,5]; 數組可以存多個值,建議存同類型的值,但是可以存任意類型的值.
  arr.length 數組的長度
   
  arr[0] 表示數組中的第一個元素
  arr[1] 表示數組中的第二個元素
   
  arr[0]=10; 表示將數組中的第一個元素修改或者賦值為0
   
  動態增加數組 arr[arr.length]
   
   
  6.函數
  函數的作用: 封裝功能,可以復用.
  函數的語法: 定義 + 調用
  函數的定義:
  function 函數名(參數){
  //執行語句
   
  return 結果;
  }
  函數的調用:
  函數名(值); //可以將函數的返回值存到變數中使用
   
  形參: 函數定義的時候的參數,本質上是一個局部變數
  實參: 函數調用的時候的參數,需要傳入一個具體的值.
  註意; 形參和實參建議一一對應
   
  內置實參對象: arguments 使用中括弧數組的方式獲取實參
   
  函數的其他寫法:
  匿名函數: function(){}
  函數表達式: var fn=function(){} fn();
  自調用函數: (function(){})()
   
   
  7.對象
  對象: 就是將現實事物抽象為功能代碼. 將現實世界的東西,用對象的語法格式來表示.
  對象的語法: 對象中有屬性和方法
  對象的三種寫法:
  1.字面量寫法
  var zs={
  name:'張三',
  age:18,
  sayHi:function(){
  console.log("你好");
  }
   
  }
  zs.name
  zs.age
  zs.sayHi()
   
  2.new Object()寫法
  var zs = new Object();
  zs.name='張三';
  zs.age=18;
  zs.sayHi=function(){}
   
  3.構造函數寫法
  function Person(name,age){
  this.name= name;
  this.age=age;
  this.sayHi=function(){}
  }
  var zs = new Person('張三',18);
   
  對象的遍歷: for-in
  for(var key in Obj){
  console.log(key+'--'+Obj[key]);
  }
   
   
   
  8.內置對象
  Math對象 : 數學對象 Math.random() Math.floor() Math.ceil() Math.max() Math.min()
  任意區間隨機數公式:Math.floor(Math.random() * (max - min + 1) + min);
   
  Date()時間對象:
   
  var date = new Date(); //獲取當前時間
  var date = new Date('2018-8-8 12:12:12'); //獲取當前時間
  var date = new Date('2018/8/8'); //獲取當前時間
  var date = new Date(2018,7,6); //獲取時間,月份會大1 ,7 表示8月份
   
  1.先轉換成毫秒,然後再轉換成年月日,時分秒
  date.getTime()
  date.Valueof()
  date.now()
  2.通過對象的內置方法,直接獲取年月日,時分秒
  date.getFullYear(); //年
  date.getMonth(); //月 0 一月份 1 二月份
  date.getDate(); //日
  date.getDay(); //星期幾, 0 周日 1周一 6周六
   
  date.getHours(); //小時
  date.getMinutes(); //分鐘
  date.getSeconds(); //秒數
   
  3.會計算時間差.
  1.毫秒相減 ,除以1000,變成秒數差
  2.計算天,時,分,秒
  d = parseInt(總秒數/ 60/60 /24); // 計算天數
  h = parseInt(總秒數/ 60/60 %24) // 計算小時
  m = parseInt(總秒數 /60 %60 ); // 計算分數
  s = parseInt(總秒數%60); // 計算當前秒數
  3.判斷是否個位數,然後補0
  h = h<10? '0'+h : h;
   
  字元串對象
  1.indexOf(要查找的字元,開始位置) 開始位置不寫預設從0開始,找不到返回-1 ----查找字元
  2.charAt(字元位置) 給一個位置,返回該位置的字元 ----獲取字元
  3.subStr(開始位置,截取個數) 返回截取的字元串結果 ----截取字元
  4.replace(要替換的字元,替換的新字元) ----替換字元
  5.join(連接符) 將數組通過連接符連接,返回字元串 ----連接字元
  6.split(連接符) 將字元根據連接符分割成多個值的數組,返回數組 ----分割字元
  7.toUpperCase() 將字元串轉換為大寫 ----轉換成大寫
  8.toLowerCase() 將字元串轉換為小寫 ----轉換成小寫
   
  數組對象:
  1.push() 後面添加元素
  2.pop() 後面刪除元素
   
  3.unshift() 前面添加元素
  4.shift() 前面刪除元素
   
  5.reverse() 翻轉數組
  6.sort() 排序數組
   
  arr.sort(function(a,b){
  return a-b; //升序
  })
   
  arr.sort(function(a,b){
  return b-a; //降序
  });
   
  7.concat() 合併數組
  var arr3 = arr1.concat(arr2);
   
  8.splice 刪除/修改/添加數組
  arr.splice(開始位置); //從開始位置刪除到最後
  arr.splice(開始位置,刪除個數); //從開始位置刪除幾個
   
  //新增內容
  arr.splice(開始位置,0,新增元素);
  arr.splice(1,0,'a','b'); //在索引1元素之前插入a和b
   
  //替換內容
  arr.splice(開始位置,刪除個數,新增元素);
  arr.splice(1,1,'d'); //在索引為1開始刪除一個元素,替換為
   
   
  9.indexOf() 查找數組
   
  查找數組中的元素位置
  arr.indexOf(元素); //返回元素的索引位置,如果沒有返回-1
  arr.indexOf(元素,開始位置); //從開始位置繼續向後找.
  arr.lastIndexOf(元素) //返回元素索引位置,如果沒有返回-1,從後往前找
   
  10.tostring() 轉換為字元串
   
  數組轉換為字元串
  arr.toString(); 將數組中的每個元素用逗號鏈接成字元串
   
  11.join() 數組拼接分隔符
  arr.join(); //預設以逗號連接數組,拼接成字元串
  arr.join(分隔符); //以分隔符連接數組元素,拼接成字元串
   
   
  9.其他
  1.變數的命名規範
  1.字母,數字,下劃線,$等組合,
  2.數字不能開頭
  3.不能是關鍵字
  4.不能是中文
  5.建議使用駝峰命名
  2.輸出列印
  alert()
  console.log()
  prompt();
   
  3.轉義字元
  \n 換行
  \t tab製表符
   
   
  4.預解析
  變數聲明和函數聲明提前
   
  5.作用域和作用域鏈
  作用域:變數的作用範圍
  作用域鏈: 人外有人,天外有天
   
  6.局部變數和全局變數
  全局變數有兩種:
  1.在括弧外面直接寫的變數
  2.在函數內部,未使用var聲明但直接賦值的變數
   
  局部變數:
  1.形參就是局部變數
  2.函數內部的變數就是局部變數
   
  註意:js中沒有塊級作用域
  {
  var a=1;
  }
   
   
  7.this和new的理解
  this的指向問題:
  1.函數在定義this的時候是不確定的,只有在調用的時候才可以確定
  2.一般函數直接執行,內部this指向全局window
  3.this的指向,誰調用指向誰
  4.構造函數中的this 對象的實例
  new在執行時會做四件事情
  1.new會在記憶體中創建一個新的空對象
  2.new會讓this指向這個新的對象
  3.執行構造函數裡面的代碼,目的是給這個新對象加屬性和方法
  4.new會返回這個新對象,所以構造函數裡面不需要return
   
  8.運算符和優先順序
  1.()
  2.++ -- !
  3.先* / % 後+ -
  4.< > <= >= == != === !==
  5.先&& 後||
  6.賦值運算符
  註意: 等於和不等於 == === != !==
  ++a 和 a++
  && 並且
  || 或者
  ! 取反
   

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • [開發技巧]·HTML檢測輸入已完成自動填寫下一個內容 個人網站 --> http://www.yansongsong.cn 在上一個博客中簡易實現檢測輸入已完成,我們實現了檢測輸入已完成,現在我們再進一步,在此基礎上,實現檢測輸入已完成自動填寫下一個內容。當我們需要自動填寫的內容,不希望被更改的時 ...
  • 錯誤原因: 子組件 props -> list 要求接收的數據類型是 Array, 然而實際接收到的是 Undefined。 子組件代碼: 所以檢查父組件傳過來的值,保證傳過來的值是子組件所期望的數據類型即可。 ...
  • //HTML部分 <div class="wrap"></div> <div class="popUpBox"> <div class="layer-head"><div class="layer-head-text">彈出框</div><div class="layer-close"></div> ...
  • pc端個性化日曆實現 技術:vue = v for、slot scop 插槽域 需求:需要實現日曆上每一天動態顯示不同的信息 思路:運用vue 中 slot scop 插槽域的知識點,將個性化的代碼樣式放到slot中 再通過slot scop 獲取這個插槽中的所需數據 一、實現日曆組件 思路:佈局上 ...
  • 原理:通過動態生成canvas然後轉為base64格式 代碼Demo export const waterMark = (text) = { let _wm = document.createElement('canvas') _wm.setAttribute('width',150) _wm.se ...
  • 工作的越久,有些基礎知識我們可能就逐漸淡忘了,今天我們來回顧一下css的聖杯佈局和雙飛翼佈局, 這兩個名詞你可能不熟, 那三欄佈局你肯定就非常熟悉了, 就是兩邊定寬, 中間自適應 的 佈局 1 , 聖杯佈局 首先HTML結構是這樣的,因為要保證中間的結構先渲染, 所以 center 要放在 最前面 ...
  • 下麵是五個正則合到一起的一個正則表達式 this.options.formData[8].value = value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').repla ...
  • 1.標簽選擇器 div{} 2.類選擇器 .one class="one" 3.id選擇器(定義+調用) #one{} id="one" 4.通配符選擇器 *{} 5.後代選擇器 .one a {} 6.子代選擇器 .one>a{} 7.交集選擇器 p.one {} 8.並集選擇器 .one,.tw ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...