JS基础_03—数据类型详解

一、基本数据类型

1.String

/*
* String 全局对象是一个用于字符串或一个字符序列的构造函数。
*/

​ 字符串字面量采取以下形式:

'string text'
"string text"
"中文/汉语"
"español"
"English "
"हिन्दी"
"العربية"
"português"
"বাংলা"
"русский"
"日本語"
"ਪੰਜਾਬੀ"
"한국어"

​ 你也能使用 String 函数将其他值生成或转换成字符串:

String(thing)
new String(thing)
//new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。

​ 除了普通的可打印字符以外,一些有特殊功能的字符可以通过转义字符的形式放入字符串中:

转移符含义
\0空字符
\’单引号
\"双引号
\\反斜杠
\n换行
\r回车
\v垂直制表符
\t水平制表符
\b退格
\r换页

​ 有时,你的代码可能含有很长的字符串。你可能想将这样的字符串写成多行,而不是让这一行无限延长或着被编辑器折叠。有两种方法可以做到这一点。

其一,可以使用 + 运算符将多个字符串连接起来,如下所示:

let longString = "This is a very long string which needs " +
                 "to wrap across multiple lines because " +
                 "otherwise my code is unreadable.";

​ 其二,可以在每行末尾使用反斜杠字符(“\”),以指示字符串将在下一行继续。确保反斜杠后面没有空格或任何除换行符之外的字符或缩进; 否则反斜杠将不会工作。 如下所示:

let longString = "This is a very long string which needs \
to wrap across multiple lines because \
otherwise my code is unreadable.";

​ 字符串字面量 (通过单引号或双引号定义) 和 直接调用 String 方法 (没有通过 new 生成字符串对象实例) 的字符串都是基本字符串。

​ JavaScript 会自动将基本字符串转换为字符串对象,只有将基本字符串转化为字符串对象之后才可以使用字符串对象的方法。

​ 当基本字符串需要调用一个字符串对象才有的方法或者查询值的时候 (基本字符串是没有这些方法的),JavaScript 会自动将基本字符串转化为字符串对象并且调用相应的方法或者执行查询。

2.Number

​ JavaScript 的 Number 对象是经过封装的能让你处理数字值的对象。

Number 对象由 Number() 构造器创建。

​ 语法如下:

new Number(value);
var a = new Number('123'); // a === 123 is false
var b = Number('123'); // b === 123 is true
a instanceof Number; // is true
b instanceof Number; // is false

3.Boolean

Boolean 对象是一个布尔值的对象包装器。

​ 如果需要,作为第一个参数传递的值将转换为布尔值。

​ 如果省略该参数或参数值为 0-0nullfalseNaNundefined,或空字符串(""),则该对象具有的初始值为 false

​ 所有其它值,包括任何对象,空数组([])或字符串 "false",都会创建一个初始值为 true 的对象。

4.null

​ 值 null 特指对象的值未设置,但是这个变量或对象属性确实存在

5.undefined

​ 全局属性 undefined 表示原始值 undefined。

undefined 属性的属性特性:

writablefalse
enumerablefalse
configurablefalse
/*
* 属性特性:		
*	configurable
*		当且仅当该属性的 configurable 键值为 true 时,该属性的描述符才能够被改变,同时该属性也能从对应* 的对象上被删除。
* 	enumerable
*		当且仅当该属性的 enumerable 键值为 true 时,该属性才会出现在对象的枚举属性中。
*	writable
*		当且仅当该属性的 writable 键值为 true 时,属性的值,也就是上面的 value,才能被赋值运算符改变.
*/

6.Symbol

二、引用数据类型

1.Object

​ 在 JavaScript 中,几乎所有的对象都是 Object 类型的实例,它们都会从 Object.prototype 继承属性和方法,虽然大部分属性都会被覆盖(shadowed)或者说被重写了(overridden)。

​ 如:Function、array、date、String、Number、Boolean 等都属于Object的一份子。

三、函数

  • ​ JavaScript 函数通过 function 关键词进行定义,其后是函数名和括号 ()。

  • ​ 圆括号可包括由逗号分隔的参数,在函数中,参数是局部变量。

  • ​ 当 JavaScript 到达 return 语句,函数将停止执行。

  • ​ 如果函数被某条语句调用,JavaScript 将在调用语句之后“返回”执行代码。

  • ​ 函数通常会计算出返回值。这个返回值会返回给调用者。

  • ​ 补充:函数与var同样有编译提升的概念

function 函数名(参数1,参数2,参数3){
	return 参数1 + 参数2 + 参数3; //终止后续代码执行并将参数1 + 参数2 + 参数3的运算结果返回给调用者
	//******后续代码不再执行******
}

四、动态类型

​ JavaScript由于是弱类型语言,同一个变量可装载不同的数据类型,变量可以被赋予任何类型的值

​ 如:

​ 我们申明了一个变量 名称为A ,A的初始值为20,现在A存储的数据类型为Number,

​ 然后下一步我们将A赋值为 “hello Mr. Cai”,

​ 那么我们的A实际上的数据类型就变成了String,那么就发生了一次变量的数据类型转换。

注意:在JavaScript中,所有名称都是区分大小写的,如:变量A与变量a,他们并不是同一个变量

五、类型运算符

1.typeof 返回一个值的数据类型

typeof null  //'object'
//例如某补老板环境:检测typeof window.onmessage
//浏览器返回"object" nodejs  返回 "undefined"

2.instanceof 判断某一个对象是否为指定构造函数的实例

navigator instanceof Navigator //true

或者

zzz = new String('')
console.log(zzz instanceof String) //true

六、强制转换

String(123) //输出 “123”

Number("1234") //输出1234

Boolean(0) //输出false

Boolean(0) //输出true

parseFloat("10.1") //输出 10.1

parseInt("10") //输出10

//注:如果字符串转数值出错,会返回NaN

七、异常处理

​ 1.Error // JavaScript 原生提供

​ (1) message //错误提示信息

​ (2) name //错误名称 (非标准属性)

​ (3) stack //错误的堆栈 (非标准属性)

var runtime = new Error("一个异常");
runtime.message; //错误提示信息
runtime.name; //错误名称
runtime.stack; //错误堆栈
throw runtime;

八、案例解析

var a = 1;
console.log(a);
if(true) {
  console.log(a);
  a = 5;
  function a() {};

  function b() {};
  a = 0;
  console.log(a);
}
console.log(a);
console.log(b);


//
1
ƒ a() {}//函数声明提前的特性,输出的是a函数
0//a函数是局部的,此时a=0覆盖了局部的a
5  ///为啥是5,执行到a=5时,覆盖的是全局的a,此时局部函数a还未定义(只能对局部a访问,但是不能赋值)
ƒ b() {}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞得更高肥尾沙鼠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值