顯式強制類型轉換

1. 日期顯式轉換為數字
  1. +new Date; //1478845373322
javascript有個奇特的語法,即構造函數沒有參數時可以不用帶()。
不過最好還是使用ES5中新加入的?靜態方法:Date.now()。
2. ~運算符
按位運算符只適用于32位整數,運算符會強制操作數使用32位格式。這是通過抽象操作ToInt32實現的。
ToInt32 首先執行ToNumber 強制類型轉換,比如“123”會先轉換為123,然后再執行ToInt32。

按位運算符有6個:?& 按位與?? ??| 按位或 ? ??^ 按位異或?? ??~ 取反?? ??>> 右移?? ??<< 左移

但這嚴格來說并不是強制類型轉換(因為返回值類型并沒有發生變化),但按位運算符(例如 | 或~)和某些數字一起使用時會產生類似強制類型轉換的效果,返回另外的數字。
例如 | 運算符 0|x僅執行ToInt32轉換。但以下特殊字符無法以32格式呈現,因此ToInt32返回0。
  1. 0|-0;//0
  2. 0|NaN;//0
  3. 0|Infinity;//0
  4. 0|-Infinity;//0
~ 首先將值強制類型轉換為32位數字,然后執行按位運算符操作“非”(對每個字符進行反轉)。
另外一種說法,源自早期的計算機科學和離散數學:~返回2的補碼。
~x等同于 -(x+1);
  1. ~5; //-6
3. 字位截除 ~~
~~中第一個 ~ 執行ToInt32并反轉字位,然后第二個 ~ 再進行一次字位反轉,將所有的字位反轉為原值,最后得到的仍是ToInt32的結果。
~~只適用于32位數字,且它對負數的處理與Math.floor(...)不同。
  1. Math.floor(-88.9); //-89
  2. ~~-88.9; //-88
~~可以將值截除為一個32位整數,x|0也可以。但最好是使用~~,出于運算符優先級的考慮。
4. 顯式解析數字字符串
解析允許字符串中含有非數字字符串,從左到右解析,遇到非數字字符則停止,而轉換不允許出現非數字字符,否則會失敗并返回NaN。
  1. var a="56";
  2. var b="56px";
  3. Number(a); //56
  4. parseInt(a); //56
  5. Number(b); //NaN
  6. parseInt(b); //56
ES5之前的parseInt32(...) 有一個坑,如果沒有第二個參數來指定轉換的基數,它會根據字符串的第一個字符來自行決定基數。
如果第一個字符是x或者X,則轉換為十六進制數字。如果是0,則轉換為八進制數字。
ES5開始,parseInt32(...) 默認轉換為十進制。
5. 顯式轉換為布爾值 ?Boolean(...)
一元運算符!顯式的將值類型轉換為布爾值,但同時會將真值轉換為假值,假值轉換為真值。所以顯式強制類型轉換為布爾值常用的做法是!!,第二個!會將結果反轉為原值。
  1. var a="0";
  2. var b=[];
  3. var c={};
  4. !!a; //true
  5. !!b; //true
  6. !!c; //true
下面這段代碼:
  1. var a=56;
  2. var b=a?true:false;
a 首先被強制轉換為布爾值才能進行條件判斷,成為“顯式的隱式”。建議使用Boolean(a)和!!a來進行顯式的強制類型轉換。


來自為知筆記(Wiz)


轉載于:https://www.cnblogs.com/cheemon/p/6054550.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/285542.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/285542.shtml
英文地址,請注明出處:http://en.pswp.cn/news/285542.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【ArcGIS風暴】ArcGIS Editor for OSM中文教程(2):下載及加載OSM數據

本文講解在ArcGIS中借助OpenStreetMap工具下載并加載OSM數據。 文章目錄 1. 下載OSM數據2. 加載OSM數據1. 下載OSM數據 在工具箱中雙擊Download OSM Data(XAPI)工具。 Download URL:http://www.overpass-api.de/api/xapi_meta? Downlaod Extent:與圖層lanzhou相同

Object.observe將不加入到ES7

先請看 Object.observe 的 API Object.observe(obj, callback[, acceptList])它用來監聽對象的變化&#xff0c;當給該對象添加屬性&#xff0c;修改屬性時都會被依次記錄下來 看一個示例 var person {} Object.observe(person, function(arr) {var change arr[0]console.log…

Kafka學習征途:.NET Core操作Kafka

【Kafka】| 總結/Edison Zhou1可用的Kafka .NET客戶端作為一個.NET Developer&#xff0c;自然想要在.NET項目中集成Kafka實現發布訂閱功能。那么&#xff0c;目前可用的Kafka客戶端有哪些呢&#xff1f;目前.NET圈子主流使用的是 Confluent.Kafkaconfluent-kafka-dotnet : htt…

C語言試題107之判斷 101至200 之間有多少個素數,并輸出所有素數。

?作者簡介:大家好我是碼莎拉蒂,CSDN博客專家?????? ??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 1、題目 題目:判斷 101至200 之間有多少個素數,并輸出所有素數 分析:判斷素數的方法:用一個數分…

C語言將十進制輸出二進制、八進制、十六進制的方法總結

文章目錄 方法一:直接輸出方法二:itoa函數方法一:直接輸出 C語言中,控制printf函數輸出格式的是格式字符,printf沒有直接打出2進制數的格式符,直接打出16進制的格式符是x格式符,即%x。 printf函數中輸出的格式為printf("<格式化字符串>", <參量表&…

[Android] 修改ImageView的圖片顏色

有兩種方法&#xff1a; 方法1&#xff1a; ImageView imageView (ImageView) findViewById(R.id.arrow_image); Drawable tipsArrow imageView.getDrawable(); tipsArrow.setColorFilter(mContext.getResources().getColor(R.color.red_bg1), PorterDuf…

四叉樹算法

2019獨角獸企業重金招聘Python工程師標準>>> title: 四叉樹算法 date: 2016-1-11 15:10 categories: IOS tags: 算法 小小程序猿我的博客&#xff1a;http://daycoding.com 轉載&#xff1a;http://blog.csdn.net/zhanxinhang/article/details/6706217 高德iOS聚合…

2019年中國教育信息化行業研究報告

2019年中國教育信息化行業研究報告 教育行業丨研究報告 本文轉自&#xff1a;艾瑞咨詢 核心摘要&#xff1a; 教育信息化2.0時代&#xff0c;教育相關政府/學校以更開放的姿態對待社會各類業態的進入&#xff0c;共建共享優質教育資源&#xff0c;提升教育公平與教育質量。同…

C語言試題109之將一個正整數分解質因數。例如:輸入 90,打印出 90=2乘3乘3乘5

?作者簡介:大家好我是碼莎拉蒂,CSDN博客專家?????? ??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 1、題目 題目:將一個正整數分解質因數。例如:輸入 90,打印出 90=233*5。 分析:對 n 進行分解質因…

【ArcGIS遇上Python】使用add-in向導開發ArcGIS插件(1):add-in工具介紹及安裝

文章目錄 addin介紹addin開發方式Python Add-In開發addin下載addin安裝基于ArcObject/ArcGIS Engine的Add-In開發addin介紹 ArcGIS從10.0開始支持addin(ArcGIS軟件中又叫作加載項)的方式進行插件制作。相對于以往9.x系列,addin的無論是從使用或者編寫都更加方便快捷。通過開…

dotnet 使用 Crossgen2 對 DLL 進行 ReadyToRun 提升啟動性能

我對幾個應用進行嚴格的啟動性能評估&#xff0c;對比了在 .NET Framework 和 dotnet 6 下的應用啟動性能&#xff0c;非常符合預期的可以看到&#xff0c;在用戶的設備上&#xff0c;經過了 NGen 之后的 .NET Framework 可以提供非常優越的啟動性能&#xff0c;再加上 .NET Fr…

使用myeclipse建立maven項目(重要)

maven是管理項目的&#xff0c;myeclipse是編寫代碼的。第一次寫項目都要配置好多東西&#xff0c;很麻煩&#xff0c;now 來看看怎樣新建一個maven項目。 工具/原料 myeclipsemaven方法/步驟 因為教程使用的maven是自己下載配置的&#xff0c;并沒有使用myeclipse自帶的&#…

LeetCode 每日一題 Day 22 || 枚舉(數學方法)/二分

1954. 收集足夠蘋果的最小花園周長 給你一個用無限二維網格表示的花園&#xff0c;每一個 整數坐標處都有一棵蘋果樹。整數坐標 (i, j) 處的蘋果樹有 |i| |j| 個蘋果。 你將會買下正中心坐標是 (0, 0) 的一塊 正方形土地 &#xff0c;且每條邊都與兩條坐標軸之一平行。 給你…

不用@微信官網了,用python給自己的微信頭像加個小國旗

國旗LOGO&#xff08;png透明格式&#xff09;&#xff1a; 微信頭像 合成結果&#xff1a; import base64 import os import re from io import BytesIO from PIL import Image import tkinter as tk from tkinter import filedialog# 水印圖片 可以自己指定 #markImageImage…

getContentResolver().query()方法selection參數使用詳解(轉)

如何在managedQuery()和getContentResolver().query()方法中實現結果去重 有時候&#xff0c;我們需要對查詢的數據庫結果進行去重。在SQL中我們可以通過distinct關鍵字實現&#xff0c;但是當我們使用android提供的managedQuery()或getContentResolver().query()方法對數據庫進…

C語言試題106之有一對兔子問題

?作者簡介:大家好我是碼莎拉蒂,CSDN博客專家?????? ??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 1、題目 題目:有一對兔子,從出生后第 3 個月起每個月都生一對兔子,小兔子長到第三個月 后每個月又…

【C#程序設計】教學講義——第二章:簡單C#程序設計

教學目錄 2.1 面向對象的概念2.2 建立簡單的應用程序2.3 窗體和Label控件2.4 文本框-屬性2.5 按鈕控件本章小結2.1 面向對象的概念 2.1.1 對象和類 1.對象 對象是客觀世界中對象的模型化。對象是有著特殊數據(屬性)與操作(行為)的實體,對象的操作(行為)稱為方法。 程…

Blazor University (34)表單 —— 獲得表單狀態

原文鏈接&#xff1a;https://blazor-university.com/forms/accessing-form-state/獲得表單狀態源代碼[1]有時&#xff0c;我們需要獲得 <EditForm> 子內容中的表單狀態。最常見的用途是當我們需要訪問輸入的 CSS 類時&#xff0c;指示輸入是否被修改或有效/無效。例如&a…

[轉]c# 中間件 的擴展模型(.net webapi/.net Core 的 MiddleWare 處理模型)

在學習 asp.net WebApi 或者asp.net Core 的時候&#xff0c;它們管道的處理模型跟 asp.net MVC/WebForm 的管道模型是不一樣的。 asp.net WebApi 或者asp.net Core 他們使用了一種叫做“中間件”的處理模型&#xff0c;相對于傳統管道模型&#xff0c;剔除了很多非必要的處理…

AIX 環境下遇到Device Busy問題

IBM AIX v5.3操作系統環境下在對網絡或網卡進行操作過程中經常遇到"Device Busy"而終止操作例如:#rmdev -l ent1遇到如下返回信息Method error (/etc/methods/ucfgdevice):0514-062 Cant perform the requested function because the speciafield.device is busy. 解…