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
  • Timer是什麼 Timer 是一種用於創建定期粒度行為的機制。 與標準的 .NET System.Threading.Timer 類相似,Orleans 的 Timer 允許在一段時間後執行特定的操作,或者在特定的時間間隔內重覆執行操作。 它在分散式系統中具有重要作用,特別是在處理需要周期性執行的 ...
  • 前言 相信很多做WPF開發的小伙伴都遇到過表格類的需求,雖然現有的Grid控制項也能實現,但是使用起來的體驗感並不好,比如要實現一個Excel中的表格效果,估計你能想到的第一個方法就是套Border控制項,用這種方法你需要控制每個Border的邊框,並且在一堆Bordr中找到Grid.Row,Grid. ...
  • .NET C#程式啟動閃退,目錄導致的問題 這是第2次踩這個坑了,很小的編程細節,容易忽略,所以寫個博客,分享給大家。 1.第一次坑:是windows 系統把程式運行成服務,找不到配置文件,原因是以服務運行它的工作目錄是在C:\Windows\System32 2.本次坑:WPF桌面程式通過註冊表設 ...
  • 在分散式系統中,數據的持久化是至關重要的一環。 Orleans 7 引入了強大的持久化功能,使得在分散式環境下管理數據變得更加輕鬆和可靠。 本文將介紹什麼是 Orleans 7 的持久化,如何設置它以及相應的代碼示例。 什麼是 Orleans 7 的持久化? Orleans 7 的持久化是指將 Or ...
  • 前言 .NET Feature Management 是一個用於管理應用程式功能的庫,它可以幫助開發人員在應用程式中輕鬆地添加、移除和管理功能。使用 Feature Management,開發人員可以根據不同用戶、環境或其他條件來動態地控制應用程式中的功能。這使得開發人員可以更靈活地管理應用程式的功 ...
  • 在 WPF 應用程式中,拖放操作是實現用戶交互的重要組成部分。通過拖放操作,用戶可以輕鬆地將數據從一個位置移動到另一個位置,或者將控制項從一個容器移動到另一個容器。然而,WPF 中預設的拖放操作可能並不是那麼好用。為瞭解決這個問題,我們可以自定義一個 Panel 來實現更簡單的拖拽操作。 自定義 Pa ...
  • 在實際使用中,由於涉及到不同編程語言之間互相調用,導致C++ 中的OpenCV與C#中的OpenCvSharp 圖像數據在不同編程語言之間難以有效傳遞。在本文中我們將結合OpenCvSharp源碼實現原理,探究兩種數據之間的通信方式。 ...
  • 一、前言 這是一篇搭建許可權管理系統的系列文章。 隨著網路的發展,信息安全對應任何企業來說都越發的重要,而本系列文章將和大家一起一步一步搭建一個全新的許可權管理系統。 說明:由於搭建一個全新的項目過於繁瑣,所有作者將挑選核心代碼和核心思路進行分享。 二、技術選擇 三、開始設計 1、自主搭建vue前端和. ...
  • Csharper中的表達式樹 這節課來瞭解一下表示式樹是什麼? 在C#中,表達式樹是一種數據結構,它可以表示一些代碼塊,如Lambda表達式或查詢表達式。表達式樹使你能夠查看和操作數據,就像你可以查看和操作代碼一樣。它們通常用於創建動態查詢和解析表達式。 一、認識表達式樹 為什麼要這樣說?它和委托有 ...
  • 在使用Django等框架來操作MySQL時,實際上底層還是通過Python來操作的,首先需要安裝一個驅動程式,在Python3中,驅動程式有多種選擇,比如有pymysql以及mysqlclient等。使用pip命令安裝mysqlclient失敗應如何解決? 安裝的python版本說明 機器同時安裝了 ...