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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...