今天第一次接觸到typescript,看了第一個知識點就是變數的聲明,來回憶回憶,做做筆記

来源:http://www.cnblogs.com/Blog-article/archive/2016/09/21/5894477.html
-Advertisement-
Play Games

以前只用過JavaScript原生寫網站特效,今天還是第一次聽說typescript的,然後看了一下它的基本知識,感覺很像Java,真的太像了,但是又有不同點。很讓我驚奇看到的第一個知識點就和以前不同,很新鮮。 變數的聲明: 在typescript中我知道的變數的聲明有兩種(除了var),分別是le ...


以前只用過JavaScript原生寫網站特效,今天還是第一次聽說typescript的,然後看了一下它的基本知識,感覺很像Java,真的太像了,但是又有不同點。很讓我驚奇看到的第一個知識點就和以前不同,很新鮮。

變數的聲明:

在typescript中我知道的變數的聲明有兩種(除了var),分別是let和const。以前我經常用的是var,let和var很相似,const和他們不一樣,讓我驚訝的是它居然能阻止對變數的再次賦值。


因為typescript是JavaScript的超集,所以JavaScript本身是支持let和const的。那麼我們為什麼要使用let和const而不是var呢?

var的作用域規則:

function v(a:boolean){

  if(a){

  var b=10;

}

  ruturn b;

}

  v(true);//10

  v(false);//undefined

上面例子中變數b是if語句裡面,但是我們卻可以在外面訪問它,是因為var申明可以包含它的函數,模塊,命名空間或全局作用域任何位置被訪問。這些作用域規則可能會引發錯誤,其中就有多次申明同一個變數並不會報錯。var它不會管你聲明瞭多少次,反正你只會得到一次。

let聲明:

它和var寫法是一樣的;他們的區別不在語法上在語義上面;let不能再一個作用域里進行多次聲明。

例如:

let x=5;

let x=10;//error

let塊作用域:

當let聲明一個變數的時候它使用的詞法作用域或者是塊作用域。塊作用域指的就是他們包含的塊以外的不能訪問。

例如:

function fun(i:boolean){

  let a=5;

  if(i){

  let b=a+5;

  return b;

}

  return b;//error:'b' doesn`t exist here

}

或者

try{

  throw "hello word!";

}

catch(e){

  console.log("word!");

}

  console.log("e");//error:'e' doesn`t exist here

 

這裡的b和e作用域就是if語句塊或者catch語句塊里。擁有塊級作用域的變數有一個特點是他們不能再被聲明之前讀或者寫。

兩個塊級作用域聲明同一變數也會報錯。

例如:

function fun(x){

  let x=5;//error interferes with parameter declaration

}

function fu(){

  let x=5;

  var x=5;//error :can`t have both declarations of 'x'

}

並不是想說塊級作用域變數不能在函數作用域內聲明,而是塊級作用域變數需要在不用塊里聲明。

const聲明:

它還是let聲明有相同的作用域規則,但是它被賦值後不能再被改變。除非使用特殊的方法去避免,實際上const變數的內部狀態是可以改變的。

總結一下吧,現在有兩種作用域相似的聲明方式,哪一種更好呢?我覺得各有千秋吧,視情況而定。

書上說可以使用做小特權原則,所有變數出除了你計划去修改的都用const。使用const可以讓我們更容易推測數據流動。但是我更喜歡用let。

 


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

-Advertisement-
Play Games
更多相關文章
  • Extend from $.fn.panel.defaults. Override defaults with $.fn.datagrid.defaults. The datagrid displays data in a tabular format and offers rich support ...
  • Intro.js 為您的網站和項目提供一步一步的、更好的介紹 使用簡單 引入 js 和 css,然後在代碼中加入步驟和介紹。 快速小巧 7 KB 的 JavaScript 和 3 KB CSS,就是全部。 免費開源 免費和開源(包括商業用途),MIT許可證下。 鍵盤加滑鼠導航 滑鼠或鍵盤 ←, →, ...
  • 一、簡介 該demo主要實現定位功能,讀取天氣信息,語音播報功能。其中定位需要配置key,調試二維碼請到論壇中下載! 二、效果圖 三、相關討論 http://bbs.deviceone.net/forum.php?mod=viewthread&tid=850&extra=page%3D1 四、源碼地 ...
  • ####第一頁 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitiona ...
  • 1、安裝nodejs和vscode: nodejs : https://nodejs.org/en/ Visual Studio Code : https://www.visualstudio.com/en-us/products/code-vs.aspx 安裝是很簡單的,一路next就行,此處不詳 ...
  • 通常我們對最終設計至關重要,但在幕後有很多流程,例如草圖。 草圖是是把想法作為一種思想框架描繪出來。 有時客戶需要一個獨特的品牌新標識或字體更方便畫在紙上,之後掃描到 Photoshop 和 Illustrator。這裡分享20個新穎的字體設計草圖,帶給你靈感。 ...
  • 簡介 TypeScript是一種由微軟開發的自由和開源的編程語言。它是JavaScript的一個超集,而且本質上向這個語言添加了可選的靜態類型和基於類的面向對象編程。安德斯·海爾斯伯格,C#的首席架構師,已工作於TypeScript的開發。 TypeScript擴展了 JavaScript 的句法, ...
  • CSS 邊框即CSS border-border邊框樣式顏色、邊框樣式、邊框寬度的語法結構與應用案例教程篇 一、CSS 邊框基礎知識 CSS 邊框即CSS border是控制對象的邊框邊線寬度、顏色、虛線、實線等樣式CSS屬性。同時大家可以進入碼農教程提供CSS手冊查看border手冊:http:/ ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...