javascript-类型

1.number
使用64位浮点数表示范围+-1.797*10(308次方),+-5*10(-324次方),相当于C++的double

整数-2(53次方) 2(53次方)

 十六进制0x开头 例0xff
八进制0o开头 0o377 
二进制0b开头

使用e表示浮点数
6.02e23
1.47e-32

2.数的计算,在math类中有很多方法。

3.没有上溢,下溢。但有无限大无限小infinity -infinity
underflow会显示为0.

0/0会得到NaN


4.Number.MAX_VALUE 最大值
Number.MIN_VALUE 最小值
Number.NaN (0/0 或 Infintity/Infinity)

5.BigInt 64位整数,能表示更广的范围
1234n 十进制
0o7777n 八进制
0x80000000000000n 十六进制

0==0n //true
0===0n//false ===也检查类型是否匹配

二.string
utf-16 16bit的字符
使用方法 "" '' 
一些用法:
  //两行写作一行,使用\n
   'two\nlines'

//一行写作三行,使用\
  "one\
  long\
  line"

//使用反引号,两行写作两行
`the newline character at the end of this line
is include literally in this string`

字符串的比较
let string1="hello"
let string2="hellO"
string1===string2//是否相等
string1!==string2//是否不等
还可以使用< <= > >=
string 类的API方法
  let s="Hello,world"
  s.substring(1,4) //ell
  s.slice(1,4)//ell
  s.slice(-3)//rld
  s.split(",")//["Hello","world"]
 搜索:
  s.indexof("l")//2
  s.indexof("l",3)//3 从3后查找第一个l
  s.indexof("zz")// -1
  s.lastIndexOf("l")//10 最后一个l的位置
  
布尔搜索:
  s.startWith("Hell")// true
  s.endsWith("!")//false
  s.includes("or")//true

修改字符串:
  s.replace("llo","ya") //"Heya,world"
  s.toLowerCase()  //"hello,world"
  s.toUpperCase()  //"HELLO,WORLD"
  s.normalize()//The normalize() method in JavaScript is used to convert a string into a normalized form, following a specified Unicode             
                 normalization form. This is useful for comparing and manipulating strings that may contain different Unicode 
                 representations of the same characters

定位:
  s.charAt(0) //H
  s.charAt(s.length-1)//d
  s.charCodeAt(0)//he charCodeAt() method of String values returns an integer between 0 and 65535 representing the UTF-16 code unit at 
                    the given index. charCodeAt() always indexes the string as a sequence of UTF-16 code units, so it may return lone 
                  surrogates.
  s.codePointAt(0)// the method returns the Unicode value at an index (position) in a string.

填充:
  "x".padStart(3) //"  x" 填充长度到3
  "x".padEnd(3) //"x  "填充长度到3
  "x".padStart(3,"*")//"**x"填充长度到3
  "x".padEnd(3,"-")//"x--"
修剪trim:
  " test ".trim()//"test"
  " test ".trimStart()//"test "
  " test ".trimEnd()//" test"

重复:
"<>".repeat(5)//"<><><><><>"

string在Javascript中是不可改变的,上述方法返回的是一个新的string。

string可视为只读数组
let s="Hello,world"
s[0]//H
s[s.length-1]//d

反引号的使用:
将字符串连接
  let name="Bill"
  let greeting=`Hello ${ name }.`//greeting="Hello Bill."
${}被视为一个javascript表达式。计算的得到结果。将结果插入到模板字符串中。

String.raw()将原字符串返回一个带反引号的字符串。用于sql或者HTML

三。boolean
默认会转换成false的量:
undefined null 0 -0 NaN ""//空串

四.null和undefined
typeof null返回object
undefined 未定义变量,数组或对象不存在的元素,未定义函数返回值,和函数参数
Null和undefined 在===下是相等的

五。全局对象
全局常量:undefined Infinity NaN
全局函数:isNaN(),parseInt()将字符串转为int,eval()表达式处理,不建议使用。有安全风险
构造函数:Date(),RegExp(),String(),Object(),Array()
全局对象:Math,JSON


六.基本数据类型不能被更改,更改后其实返回的是一个新的基本数据类型。如字符串。
对象类型是引用类型,判等条件是他们都指向同一个对象时。
let c=Array.from(b)//es6数组拷贝。

类型转换表
value                           to String    to Number  toBoolean
undefined                      "undefined"   NaN             false
null                              "null"      0               false
true                             "true"       1 
false                             "false"     0
""(empty string)                              0             false
"1.2"                                          1.2           true
"one"                                          NaN           true
0                                 "0"                        false
-0                                 "0"                       false
1                                   "1"                       true
Infinity                         "Infinity"                  true
-Infinity                       "-Infinity"                   true
NaN                                "NaN"                     false
{}(object)                                                    true
[](empty array)                  ""           0              true
[9]                                "9"        9               true
['a']                                         NaN              true
function(){}                                  NaN               true
七.==操作符和===操作符
===严格检查双方的类型和值。类型相等才可以
==进行转化
null==undefined(true)
"0"==0(true)
0==false(true)
"0"==false(true)
八.显示转换
Number("3") //3
String(false)//"false"
Boolean([])//true
有toString()方法可以通过方法转化为字符串
九.进制转换
let n=17
let binary="0b"+n.toString(2);//0b1001
let octal="0o"+n.toString(8);//0o21
let hex="0x"+n.toString(16);//0x11

Number类提供的类型转换方法
toFixed()将数转化为定点小数的字符串
toExponential()转化为指数标记法的字符串
toPrecision()有效数字
let n=123456.789
n.toFixed(0)//"1234567"
n.toFixed(2)//"123456.79"
n.toFixed(5)//"123456.78900"
n.toExponential(1)//"1.2e+5"
n.toExponential(3)//"1.235e+5"
n.toPrecision(7)//"123456.8"
n.toPrecision(10)//"123456.7890"


parseInt() parseFloat()全局转换函数,将字符串转化为整数,实数
parseInt(".1")//NaN
pasrseFloat("$72.47")//NaN
parseInt()第二个参数可以设置为进制数
parseInt("11",2)//3
parseInt("ff",16)//255
parseInt("077",8)//63

valueOf()
let d=new Date(2010,0,1);
d.valueof()//从1970.1.1到现在的毫秒数1262332800000

3.10
使用let定义变量,使用const定义常量,const需要初始化
let ,const拥有块级作用域

var不拥有块级作用域,而是在函数内都有效。
在函数外使用var拥有全局作用域。var属于globalThis对象。
var x=2;
可以通过globalThis.x=2;来使用。无法使用delete命令删除

全局作用域中的let 和const与global对象无关。

var使用可以放在定义之前。var会被提升顺序。不会报错。
let使用必须放在定义之后,是一种较好的习惯。
posted @ 2024-10-18 20:41  zhongta  阅读(2)  评论(0编辑  收藏  举报