JS初學者筆記 變數||語法||操作符

来源:https://www.cnblogs.com/MR---Zhao/archive/2020/06/24/13187872.html
-Advertisement-
Play Games

變數&&語法 函數體內局部變數優先順序高於全局變數 函數內的變數聲明將提升至函數體頂部,同時在原位置完成初始化var聲明 在for迴圈中使用var聲明變數時,該變數的作用域為for迴圈所屬函數。 var a=[]; for(var i = 0;i<10;i++){ var q = i; a[i]=fu ...


變數&&語法

  • 函數體內局部變數優先順序高於全局變數

  • 函數內的變數聲明將提升至函數體頂部,同時在原位置完成初始化var聲明

  • 在for迴圈中使用var聲明變數時,該變數的作用域為for迴圈所屬函數。

 var a=[];  
 for(var i = 0;i<10;i++){  
 	var q = i;  
    a[i]=function(){console.log(q)}  
 }  
 a[0]()  
       
/*其中,由於for迴圈並不是一個函數體,所以for迴圈中定義的變數q和i是作用域for迴圈所在的函數體,和a同級,  
i++ 和  q=i 並不是重新定義變數,只是重覆賦值,最終迴圈結束,i = 10,q=9; */ 
  • let聲明的變數,只在let所在的代碼塊有效果
1.  var a=[];  
2.  for(let i = 0;i<10;i++){  
3.     ley q = i;  
4.     a[i]=function(){console.log(q)}  
5.  }  
6.  a[6]()    
//這裡會輸出   6  let聲明的變數僅在塊級作用域有效,所以這裡的i只在本輪迴圈有效果,每次迴圈的i其實都是一個新的變數

function 聲明

/*定義一個函數 */
//one:
function mysqrt(x){//使用此聲明則函數名與函數初始化塊均“提前”到腳本或函數的頂部
    return Math.sqrt(x*x);
    
}
//two
var mysqrt = function(x){return Math.sqrt(x*x);}//使用此聲明則僅有變數聲明“提前”到腳本或函數的頂部,初始化體仍在原來的位置

for-in

  • for-in 會跳過null、undefined
  • 只遍歷可枚舉的(包含繼承的屬性名)
/*使用for-in 變數數組元素 */
var o = {x:1,y:2,z:3}
var a = [],i = 0//聲明一個數組與一個變數
for(a[i++]in o); 

continue,break

帶標簽的continue,break作用相同,均是跳轉到指定迴圈(均不得跳轉至所屬函數邊界,即所屬函數外)

mainloop: while(token!=null){
	continue mainloop;
}
mainloop: while(token!=null){
	break mainloop;//mainloop為自定義標記
}

異常處理

throw 拋出異常

try{/*可能出現異常的代碼*/}
catch(){/*對異常的處理*/}
finally{/*不管發不發生異常都執行的語句*/}

with語句

檢索對象列表,解析變數名

/*用於簡化代碼*/
with(document.forms[0]){
	name.value="";
	address.value="";
	email.value="";
}
/*簡化前*/
var f = document.form[0];
f.name.value="";
f.address.value="";
f.email.value="";

操作符

===嚴格相等

  • 比較過程中沒有類型的轉換,兩個值類型不同則其不等
  • 值為null或undefined則其不等
  • 均是相同的布爾值則相等
  • 其中一個值為NaN則不等**

==

  • 值為null或undefined則其相等
  • 兩個不同類型的值轉換後相等則其相等(如:true轉換為1 false轉換為0 再進行比較)

in

  • 左操作數是一個字元串或可以轉換為字元串,有操作數是一個對象
  • 如右側對象包含左側操作數,表達式返回true
var a = {x:a}
"x" in a; //true

instanceof

  • 如左側對象是右側類的實例,表達式將返回true
var mynew = new Date();
mynew instanceof Date;//返回true

null、undefined

  • null是一個特殊對象(非對象),多用來表示字元串、數字、對象得無值。
  • undefined(未定義) 表示屬性或元素不存在
  • === 可區分null與undefined,而==則不行

類型轉換

x+""//等價於String(x)
+x//等價於Number(x)
!!x//等價於Boolean(x)

對象向字元串轉換

有toString則通過此方法將其變為字元串,無toString則通過ValueOf,二者均無則報錯。

空數組向數值轉換結果為0

附表:語法||運算符||類型轉換



** 待續 **


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

-Advertisement-
Play Games
更多相關文章
  • 嚴格比較二叉樹,左子樹和右子樹嚴格相等: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1 ...
  • 聲明變數特殊情況 情況 說明 結果 var age ; console.log (name); 只聲明 不賦值 undefined console.log(name) 不聲明 不賦值 直接使用報錯 name= 20; console.log (name); 不聲明 只賦值 20 1. 由字母(A-Z ...
  • 本主題講述了react+taro-JYwebApp 、webapp模板-集成方案,從零到一的手寫搭建全過程。 該項目不僅是一個持續完善、高效簡潔的webapp模板,還是一套企業級webapp開發集成方案. 致力於打造一個與時俱進、高效易懂、高復用、易維護擴展的應用方案。 ...
  • 1. 返回檢測屏幕寬度(可視區域) 1 function client() { 2 if(window.innerWidth != null) // ie9 + 最新瀏覽器 3 { 4 return { 5 width: window.innerWidth, 6 height: window.inn ...
  • 使用純CSS3 實現翻牌效果 需要註意要給子盒子使用絕對定位,這樣兩個盒子可以完全重合在一起,需要給父盒子一個 transform-style: preserve-3d;讓子盒子翻轉時保持3D效果, perspective: 400px;可以給父盒子一個視距遵守近大遠小規則可根據需要設置。 tran ...
  • 3D 旋轉木馬是CSS中常見的特效之一,旋轉木馬可以有多種方法實現,這裡我使用純CSS實現這種動畫的效果。 簡要介紹一下重點 transform: rotateY(60deg) translateZ(300px);這是必須先旋轉後 沿著z軸移動,不然會錯亂,translateZ是沿著Z軸移動,其值越 ...
  • layer.msg(content, options, end) - 提示框 layer.msg('提示內容,唯一不可省略的項', { icon: 1,//表情類型 time: 2000 //2秒關閉(預設是3秒) }, function(){ //do something,關閉後想做些什麼 }); ...
  • 前言 一個程式員面試位元組成功以後,要入職位元組時,卻發現位元組竟然沒有入職體檢,我的天呀!這也太不註重公司員工的身體健康了吧?難道是HR忘了?,不可能吧。不僅如此,由此我們還發現了位元組更多的缺陷。 由此發現,位元組不僅沒有入職體檢,竟然也沒有背景調查!位元組果然是開放的互聯網企業。小編感嘆呀,這個也確實,要 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...