Js隱式轉換筆記整理

来源:https://www.cnblogs.com/Carmena/archive/2018/08/12/9461750.html
-Advertisement-
Play Games

1.js的數據類型: Number、Boolean、String、Undefined、Null、Symbol(es6新定義的)和Object(ps:Array是特殊的Object) typeof返回6種類型:number boolean string object undefined functio ...


1.js的數據類型:         Number、Boolean、String、Undefined、Null、Symbol(es6新定義的)和Object(ps:Array是特殊的Object)         typeof返回6種類型:number  boolean  string  object   undefined function                   ps:s是undefined是因為是一個未初始化的變數 2.轉換規則:           對象——>字元串——>數值——>布爾     eg.          []==true;  //false     []轉換為字元串'',然後轉換為數值0,true直接轉換為數值1,所以不相等,輸出false          []==false //true     []先轉換為字元串'',然後轉換為數值0,false直接轉換為數值0,相等,輸出true          ![]==false //true       ![]直接轉換為布爾值再取反,轉換為布爾值時,除空字元串(''),NaN,0,null,undefined這幾個之外返回的都是true,取反false則轉換為0;false轉換為數值0,相等,輸出true          undefined==null //true    undefined和null比較返回true,二者和其他值比較返回false          Number(null)  //0  3.常見的隱式轉換         以加號運算時,String和其他類型時,其他類型都會轉換為String;其他情況,都轉換為Number類型。         ps:         1.Undefined轉換為Number時為NaN,任何Number與NaN相加都為NaN,而NaN並不等於它自身。也就是說NaN!==NaN,據說isNaN並不可靠。         2.加感嘆號後,轉換為Boolean類型為false的有:null,0,'',undefined,NaN,false                  3.number()和parseInt()都可以將對象轉化為Number類型,Number函數要比parseInt函數嚴格很多。基本上,只要有一個字元無法轉換為數值,整個字元串就會被轉為NaN                  Number類型會先調用valueOf(),String類型會先調用toString(),如果結果是原始值,則返回原始值,否則繼續用toString或valueOf(),繼續計算,若不是原始值,則拋出一個類型錯誤。         eg.                  {}+[]   //js在運行時,將第一次{}認為是空的代碼塊,相當於   +[]          []+[]  //表示字元串""         另外:         +[]===0          -[]===0         ~[]===-1   //~[]按位非空數組,其值為-1         ~-~[]===-2         ~-~-~-~-~[]===-5         ~-~-~-~-~[]+~[]===-6         ~+~[]===0         ~+~+~[]===-1         ~+~+~+~[]===0         Ps:~表示按位取反,有一個規律,~x=-(x+1)         eg.    ~-5=4         ~9=-10 4.其他         toString:         [1].toString();    //"1"         [1,2,3].toString();    //"1,2,3"         ["a",1,"b",2].toString();    //"a,1,b,2"         ToNumber:                  stackoverflow給了一些關於第二個變成NaN的解釋。          To provide further proof that this toString() conversion happens before the ToNumber conversion, we can actually modify Array.prototype.toString to provide a different result, and any ToNumber conversions will use that modified result.
1 1 Array.prototype.toString=function(){
2 2     var n=0;
3 3     for(var i=0;i<this.length;i++){
4 4         n+=this[i];
5 5     }
6 6     return n;
7 7 };
         Here I've replaced the toString on Array.prototype with a function that sums the Array. Obviously you don't want to do this, but we can show how we will now get a different result.
1     Number([1,2,3]); //6
2     +[1,2,3];   //6
         So now you can see that the ToNumber conversion of our Array that would previously have resulted in NaN is now resulting in the sum of the items in the Array.         重寫原型後:                  emmm,都是從別人那裡整理來的,如果錯了還請指正,留給自己以後翻看。
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 刪除已經創建的topic 刪除toipc主要使用:kafka-topics --delete --zookeeper zkip:zkport --topic topicname命令刪除;但是如果server.properties文件中delete.topic.enable設置的值是false(預設f ...
  • 大數據介紹 大數據本質也是數據,但是又有了新的特征,包括數據來源廣、數據格式多樣化(結構化數據、非結構化數據、Excel文件、文本文件等)、數據量大(最少也是TB級別的、甚至可能是PB級別)、數據增長速度快等。 針對以上主要的4個特征我們需要考慮以下問題: 數據來源廣,該如何採集彙總?,對應出現了S ...
  • 題目:新建一個資料庫ClassManager,包括四個表:學生表(Student)、課程表(Course)、成績表(Score)以及教師信息表(Teacher)。四個表的結構分別如表1-1的表(一)~表(四)所示,數據如表1-2的表(一)~表(四)所示。用SQL語句創建四個表並完成相關題目。 一.表 ...
  • 大數據將徹底顛覆傳統的生產方式生活方式,大數據的蓬勃發展,使許多人想從事大數據相關的工作。就0基礎入門的初學者們最關心的問題進行整理回答。 一、大數據的發展前景 1、人才稀缺:未來3至5年,中國需要200萬+大數據人才,目前大數據從業人數不足50萬,市場需求遠遠得不到滿足; 2、需求增長快速:大數據 ...
  • Preface I've implemented ProxySQL on PXC yesterday but got some errors when configured query rules.I'm gonna do it again in my master-slave environmen ...
  • Android Keyguard自Android L以來一直沒有多大變化。在Android L之前, Keyguard有自己獨立的進程,KeyguardService自開機時啟動並常駐。Android L之後到Android P,Keyguard和SystemUI共同享有一個進程。process i ...
  • 註:由於我是物聯網專業的大二學生,平時學習較多的是嵌入式編程方面的知識,對於網頁,手機Android客戶端從來沒有接觸過,因此所有東西都要從頭來過,慢慢學習。 每次學習新的東西都很激動,仿佛自己又離改變世界近了一點(純屬自己意淫),好了廢話不多說,開始我的微信小程式之旅! 1.API: (Appli ...
  • 一.前言 眾所周知:沒有對象怎麼辦?那就new一個! 那麼在JS中,當我們new一個對象的時候,這個new關鍵字內部都幹了什麼呢?現在我們就來剖析一下原生JS中new關鍵字內部的工作原理。 二.原始的new 首先,我們先new一個對象看看: 列印結果: 從列印結果中可以看到: 用new關鍵字實例化對 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...