热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

js数据类型笔记

这篇文章主假如对阮一峰先生javascript教程中数据范例和运算的笔记,轻易影象。有须要的朋侪发起直接寓目阮一峰先生javascript教程,写得更细致一:数据范例概述1、简介6

这篇文章主假如对阮一峰先生Javascript教程中数据范例和运算的笔记,轻易影象。
有须要的朋侪发起直接寓目阮一峰先生Javascript教程,写得更细致

一:数据范例概述

1、简介6种数据

1.1数值(number):整数和小数
1.2字符串(string):文本
1.3布尔值(boolean):示意真伪的两个特别值,即true(真)和false(假)
1.4undefined:示意“未定义”或不存在
1.5null:示意空值,
1.6对象(object):种种值构成的鸠合,分红三个子范例。

  • 狭义的对象(object)
  • 数组(array)
  • 函数(function)

2、typeof 运算符

这个运算符测试一个值究竟是什么数据范例
重点就是

typeof null // "object"
typeof undefined // "undefined"
二、null, undefined 和布尔值

1、null, undefined转数字化

null 转为数字是 0
undefined 转为数字是 NAN

2、null, undefined的运用场景

null示意空值。
undefined示意“未定义”,场景有4个

  • 2.1变量声清楚明了,但没有赋值


var i;
i // undefined

  • 2.2挪用函数时,应当供应的参数没有供应,该参数即是 undefined


function f(x) {
return x;
}
f() // undefined

  • 2.3对象没有赋值的属性

var o = new Object();
o.p // undefined

  • 2.4函数没有返回值时,默许返回 undefined

function f() {}
f() // undefined

3、布尔值

3.1哪些运算符会产出布尔值

  • 前置逻辑运算符: ! (Not)
  • 相称运算符:===,!==,==,!=
  • 比较运算符:>,>=,<,<=

3.2其他数据范例转换成布尔值
转换划定规矩是除了下面六个值被转为false,其他值都视为true。

  • undefined
  • null
  • false
  • 0
  • NaN
  • &#8220;&#8221;或&#8221;(空字符串)

3.3转换成布尔值的运用环境
大部份是用于推断顺序流程,如下面把if()内里推断成布尔值

if ('') {
console.log('true');
}

三、数值(该部份内容较多,我只是扼要摘取一部份)

数值构成体式格局
Javascript 内部,一切数字都是以64位浮点数情势贮存。
第1位:标记位,0示意正数,1示意负数
第2位到第12位(共11位):指数部份
第13位到第64位(共52位):小数部份(即有用数字)

四、字符串

1、定义:
字符串就是零个或多个排在一同,放在单引号或双引号当中的字符

2、字符串运用的非常场景

  • 2.1 单引号字符串的内部,能够运用双引号,不能直接运用单引号。双引号字符串的内部,能够运用单引号,不能直接运用双引号

'key = "value"'

  • 2.2 在单引号字符串的内部,运用单引号,就必需在内部的单引号前面加上反斜杠,用来转义

'Did she say \'Hello\'?'
// "Did she say 'Hello'?"

  • 2.3字符串默许只能写在一行内,分红多行将会报错

'a
b
c'
// SyntaxError: Unexpected token ILLEGAL

  • 2.4假如长字符串必需分红多行,能够在每一行的尾部运用反斜杠

注重,反斜杠的背面必需是换行符,而不能有其他字符(比方空格),不然会报错。

var lOngString= 'Long \
long \
long \
string';
longString
// "Long long long string"

  • 2.5能够用+衔接多个单行字符串,将长字符串拆成多行誊写

var lOngString= 'Long '
+ 'long '
+ 'long '
+ 'string';

2.6 es6新增写法
运用`包裹字符串,就能够完成换行。**这个标记是键盘esc下面谁人键**
《js 数据类型笔记》

3、字符串的运用

3.1猎取字符串的长度

var str = "hello";
console.log( str.length );

3.2经由过程下标猎取到字符串某个字符的值

console.log( str[0] ); //h
console.log( str[str.length - 1] ); // 0

3.3经由过程charaAt猎取到字符串某个字符的值

var str = "hello";
console.log( str.charAt(0) ); // h
console.log( str.charCodeAt(0) ); //输出对应字符的ASCII码

3.4字符串截取
注重截取后,本来的字符串稳定

var str = "hello world";
var sub1 = str.substr(1, 3); // 第一个是最先位置, 第二个是长度
var sub2 = str.substring(1, 3); // 第一个是最先位置,第二个是完毕位置,str[完毕位置]不会被截取进去

3.5用search查找字符串内是不是有对应的内容
本来的字符串稳定

var str = "hello my world";
var s1 = str.search('my'); //6(最先位置) 找不到为-1

3.6 用replace替代字符串的值
本来的字符串稳定

var s2 = str.replace('my', 'your') //前面是被替代内容,背面是替代内容

3.7转变字符串大小写
字符串操纵不会修正本来的字符串

var str = "Hello";
str.toUpperCase(); //HELLO
str.toLowerCase(); //hello

3.8字符串拼接

  • 两个差别字符串相+

var str1='hello'
var str2='world'
str1+str2 //"helloworld"

  • 字符串名和字符串相加

var color ='red'
var str='衣服的色彩是'+color //衣服的色彩是red

  • 字符串模板

var name = '饥人谷'
var website = 'jirengu.com'
var str = `你好, 这里是${name},${website},开启你的前端之路`
//"你好, 这里是饥人谷,jirengu.com,开启你的前端之路"
五、对象

1、定义:

对象就是一组“键值对”(key-value)的鸠合,是一种无序的复合数据鸠合。

2、对象的构成

var obj = {
foo: 'Hello',
bar: 'World'
};

  • 该对象内部包括两个键值对
  • foo是“键名”(成员的称号),字符串Hello是“键值”(成员的值)
  • 两个键值对之间用逗号分开

3、键名的定义划定规矩

对象的每个键名又称为“属性”(property)

  • 3.1对象的一切键名都是字符串,能够不必打引号
  • 3.2键名假如是数值,会转成字符串

var obj = {
1: 'a',
3.2: 'b',
1e2: true,
1e-2: true,
.234: true,
0xFF: true
};

  • 3.3键名的定名满足标识名的前提,不然就要打上引号

var obj = {
1p: 'Hello World'
};
// 不报错
var obj = {
'1p': 'Hello World',
'h w': 'Hello World',
'p+q': 'Hello World'
};

4、键值的运用场景

对象的每个键名又称为“属性”(property),它的“键值”能够是任何数据范例。

  • 4.1属性的值为函数,一般把这个属性称为“要领”,它能够像函数那样挪用。

var obj = {
p: function (x) {
return 2 * x;
}
};
obj.p(1) // 2

  • 4.2属性的值照样一个对象,就形成了链式援用。

var o1 = {};
var o2 = { bar: 'hello' };
o1.foo = o2;
o1.foo.bar // "hello"

5、对象猎取键值的体式格局(只要两种)

  • 5.1经由过程对象名.属性名来猎取属性的值

var o1 = {};
var o2 = { bar: 'hello' };
o1.foo = o2;
**o1.foo.bar** // "hello"

  • 5.2经由过程对象名[&#8216;属性名&#8217;]来猎取属性的值,注重中括号内里是字符串,所以一定要加引号

o1['foo']
ol[foo]就是毛病的,由于浏览器剖析时会以为foo是一个变量,找不到这个变量就会报错

6、对象的援用

  • 假如把一个原始范例(number 字符串 等)的值赋值给变量。那变量这时候都是值的拷贝。
    假如把对象赋值给变量,我们只是将对象的存储地点指向了变量。
  • 假如差别的变量名指向同一个对象,那末它们都是这个对象的援用,修正个中一个变量,会影响到其他一切变量。

var o1 = {};
var o2 = o1;
o1.a = 1;
o2.a // 1
o2.b = 2;
o1.b // 2

7、表达式照样语句?

Javascript划定,假如行首是大括号,一概解释为语句(即代码块)。
假如要解释为表达式(即对象),必需在大括号前加上圆括号。

eval('{foo: 123}') // 123 这是一个语句,示意一个代码区块,内里有一个标签foo,指向表达式123。
eval('({foo: 123})') // {foo: 123} 这是一个表达式,示意一个包括foo属性的对象

{foo:123}.foo 是毛病的
({foo:123}).foo //输出的是123

8、对象的运用要领

8.1 搜检变量是不是声明
道理:在浏览器环境,一切全局变量都是window对象的属性。
window.a的寄义就是读取window对象的a属性,假如该属性不存在,就返回undefined,并不会报错。

if ('a' in window) {
// 变量 a 声明过
} else {
// 变量 a 未声明
}

8.2属性的赋值
和读取值一样,有两种要领

o.p = 'abc';
o['p'] = 'abc';

8.3用Object.keys检察一切属性

var o = {
key1: 1,
key2: 2
};
Object.keys(o);
// ['key1', 'key2']

8.4 delete删除对象的属性

var o = {p: 1};
Object.keys(o) // ["p"]
delete o.p // true
o.p // undefined

注重:delete敕令不能删除var敕令声明的变量,只能用来删除属性。由于var声明的全局变量都是顶层对象的属性,而且默许不得删除。

var p = 1;
delete p // false
delete window.p // false

8.5用for&#8230;in轮回用来遍历对象的悉数属性
var obj = {a: 1, b: 2, c: 3};

for (var i in obj) {
console.log(o[i]);
}
// 1
// 2
// 3
i就是定义了一个变量,内里放的就是对象的属性


推荐阅读
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • 图像因存在错误而无法显示 ... [详细]
  • 本文介绍了一个React Native新手在尝试将数据发布到服务器时遇到的问题,以及他的React Native代码和服务器端代码。他使用fetch方法将数据发送到服务器,但无法在服务器端读取/获取发布的数据。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
  • 解决.net项目中未注册“microsoft.ACE.oledb.12.0”提供程序的方法
    在开发.net项目中,通过microsoft.ACE.oledb读取excel文件信息时,报错“未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序”。本文提供了解决这个问题的方法,包括错误描述和代码示例。通过注册提供程序和修改连接字符串,可以成功读取excel文件信息。 ... [详细]
author-avatar
再见vivian
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有