js高级教程笔记——数据类型

Javascript中什么是伪数组?如何将伪数组转化为标准数组?

无法直接调用数组方法 或期望length属性有什么特殊的行为,

但可以对真正数组遍历方法来遍历它们。

如:argument参数,调用getElementsByTagName,document.childNode返回NodeList对象都属于伪数组。

Array.prototype.slice.call(fakeArray)转化


typeof返回哪些数据类型

Object number function boolean underfind

类型转换

强制类型转换:parseInt,parseFloat,number

隐式类型转换:== , ===(前者自动转换类型)

 split() join() 的区别

前者是切割成数组的形式,后者是将数组转换成字符串


一、数据类型
1、总述
区别
基本类型: 1. 不可以添加属性 2.复制后/变量作为参数传递给函数时,改变原始值/在函数中改变变量,不影响副本
引用类型(由多个值组成):1.可以添加属性2.复制后/变量作为参数传递给函数时,改变原始值/在函数中改变变量,影响副本 (指针指向堆中的同一个对象)
【深拷贝】?
检测方法:
  • typeof xx:检测是什么类型,返回类型(所有引用类型均返回object)
  • xx instanceof 一种指定引用类型:检测是什么引用类型,返回boolean(只能用在一个框架里的数组)
  • constructor 属性-Array.isArray(value):ECMAScript新增,同instanceof(可用在多个框架)
转换方法:
  • valueOf:Array-字符串,Date-1970.1.1毫秒数,其他不变
  • toString()/toLocaleString()


2、各类型
基本类型(见第三章):
Undefined、Null、Boolean、Number、String
引用类型:Object,Array,RegExp
object:
创建实例:
1.构造函数,然后添加对象的属性
2.字面量表示法,在字面量中直接写属性(最后一项没有逗号
访问属性:
两种方法,1.a["b"],用于:a属性名中有空格 等 b 属性名是变量 。2.a.b

array:
创建实例:
1.构造函数,可以在()中设定长度/传入项
2.字面量表示法,注意逗号
访问属性:
可以直接通过访问xx[x]修改&新增值(可以不管长度跳着新增),可以直接通过修改length删除值
方法
改变原数组,返回其他:
push():栈方法,返回新数组长度
pop():栈方法,返回移除项
shift():队列方法,返回移除项
unshift():队列方法,返回新数组长度
reverse():
sort(function(a,b){return ~}):如果没有function,各项转化成字符串

操作方法不改变数组,返回新数组:
concat():
slice(start,end可选):参数是负数时,倒数。
splice(index,deleteCount删除,item1,.....,itemX添加-可选)
位置方法,返回其他
indexOf/latIndexOf():返回位置值/没有返回-1
迭代方法,不改变原数组,返回其他/新数组,回调函数-function(item,index,array){return ~}
every()/some():返回boolean
map()/forEach():map返回新数组,filter无返回值
filter():返回新数组
reduce(func(prev,cur,index,array){return ~}):归并方法,第一次运算返回值作为第一个参数传入到第二次运算

Date
创建实例&方法:
返回日期毫秒数(1970.1.1的毫秒数)
new Date("月/日/年")=new Date( Date.parse("月/日/年"))
new Date(Date.UTC(年,月,其他可选) )
表示调用函数时的毫秒数:Date.now():【可在函数前后加两次,用来算出调用函数所用时间】
格式化:toUTCString()

RegExp
创建实例:三种,如果不知道用什么,用构造函数
/ab+c/i;
new RegExp('ab+c', 'i');
new RegExp(/ab+c/, 'i');
属性:
实例属性:global 、multiline、 ignoreCare、 lastIndex 、source
构造函数属性:input lastMatch lastParen leftContext rightContext multiline
方法:
pattern.exec()【每次运行只找一个,如果开了全局,第二次会找下一个,不开全局,则一直返回第一个】
pattern.test()【是否符合模式】例: if(pattern.test(text)){alert(RegExp.input);
. 任意单个字符换行符\n \r \u2028 或 \u2029无效,m无效(多行时用[^],换行符有效)
\d=[0-9]\D=[^0-9]数字 
\w=[A-Za-z0-9_]\W=[^A-Za-z0-9_]数字字符下划线 
\s\S空白符包括空格、\t \v制表符、\f换页符、\n换行符、\r回车符、和其他 Unicode 空格
[\b]退格符、\0  NUL 字符(不要跟小数点)  \cX  匹配字符串中的一个控制字符、\xhh编码为 hh (两个十六进制数字)的字符、\uhhhh Unicode 值为 hhhh (四个十六进制数字)的字符。
[xyz](连续的话=[x-z] 可以不连续) [^xyz]集合中的任意一个字符 

^匹配输入/字符串的开始。如果多行(multiline)标志被设为 true,该字符也会匹配一个断行(line break)符后的开始处
$匹配输入/字符串的结尾。如果多行(multiline)标志被设为 true,该字符也会匹配一个断行(line break)符的前的结尾处。
\b匹配一个零宽单词边界(zero-width word boundary),如一个字母与一个空格之间。 
\B匹配一个零宽非单词边界(zero-width non-word boundary),如两个字母之间或两个空格之间。
(x)匹配 x 并且捕获匹配项。 这被称为捕获括号(capturing parentheses)。
\nn 是一个正整数。一个反向引用(back reference),指向正则表达式中第 n 个括号(从左开始数)中匹配的子字符串。
(?:x)匹配 x 不会捕获匹配项。这被称为非捕获括号(non-capturing parentheses)。匹配项不能够从结果数组的元素 [1], ..., [n] 或已被定义的 RegExp 对象的属性 $1, ..., $9 再次访问到。
x*匹配前面的模式 x 0 或多次。例如,/bo*/ 匹配 "A ghost booooed" 中的 "boooo","A bird warbled" 中的 "b",但是不匹配 "A goat grunted"。
x+匹配前面的模式 x 1 或多次。等价于 {1,}。例如,/a+/ 匹配 "candy" 中的 "a","caaaaaaandy" 中所有的 "a"。
x*?
x+?
像上面的 * 和 + 一样匹配前面的模式 x,然而匹配是最小可能匹配。例如,/".*?"/ 匹配 '"foo" "bar"' 中的 '"foo"',而 * 后面没有 ? 时匹配 '"foo" "bar"'。
x?匹配前面的模式 x 0 或 1 次。例如,/e?le?/ 匹配 "angel" 中的 "el","angle" 中的 "le"。如果在数量词 *、+、? 或 {}, 任意一个后面紧跟该符号(?),会使数量词变为非贪婪( non-greedy) ,即匹配次数最小化。反之,默认情况下,是贪婪的(greedy),即匹配次数最大化。在使用于向前断言(lookahead assertions)时,见该表格中 (?=)、(?!) 和 (?:) 的说明。
x(?=y)只有当 x 后面紧跟着 y 时,才匹配 x。 例如,/Jack(?=Sprat)/ 只有在 'Jack' 后面紧跟着 'Sprat' 时,才会匹配它。/Jack(?=Sprat|Frost)/ 只有在 'Jack' 后面紧跟着 'Sprat' 或 'Frost' 时,才会匹配它。然而,'Sprat' 或 'Frost' 都不是匹配结果的一部分。
x(?!y)只有当 x 后面不是紧跟着 y 时,才匹配 x。例如,/\d+(?!\.)/ 只有当一个数字后面没有紧跟着一个小数点时,才会匹配该数字。/\d+(?!\.)/.exec("3.141") 匹配 141 而不是 3.141。
x|y匹配 x 或 y例如,/green|red/ 匹配 "green apple" 中的 ‘green',"red apple." 中的 'red'。
x{n} n 是一个正整数。前面的模式 x 连续出现 n 次时匹配。例如,/a{2}/ 不匹配 "candy," 中的 "a",但是匹配 "caandy," 中的两个 "a",且匹配 "caaandy." 中的前两个 "a"。
x{n,} n 是一个正整数。前面的模式 x 连续出现至少 n 次时匹配。例如,/a{2,}/ 不匹配 "candy" 中的 "a",但是匹配 "caandy" 和 "caaaaaaandy." 中所有的 "a"。
x{n,m} n 和 m 为正整数。前面的模式 x 连续出现至少 n 次,至多 m 次时匹配。例如,/a{1,3}/ 不匹配 "cndy",匹配 "candy," 中的 "a","caandy," 中的两个 "a",匹配 "caaaaaaandy" 中的前面三个 "a"。注意,当匹配 "caaaaaaandy" 时,即使原始字符串拥有更多的 "a",匹配项也是 "aaa"。

Function
定义方法:
1.函数声明: function xx(){;}提升
2.函数表达式定义 :var xx=function(){;}不提升,故可能产生错误
3.构造函数 :可接受任意数量参数 最后一个参数是函数体,所有参数加引号,(不推荐,导致解析两次)
函数和函数名:
函数是对象,函数名是指向函数的指针
可以有多个名字指向同一函数,改一个名字不影响另一个,但如果直接用声明函数的方式去改,就会影响所有指针
同一个名字赋给两个不同函数,后一个会覆盖前一个函数(没有重载
函数可以作为arg值传递给别的函数,要想在传递的时候不运行他,就要传递不带括号的函数名,也就是指针(所有filter这类函数中的回调函数都没有括号!)
内部属性
callee:
指向拥有argument对象的函数(在函数内部调用就是函数本身,防止函数在外部改名想调自己的时候调不到
this:
调用函数的对象 全局中是windows
caller:
调用函数的函数 全局中是null
属性
length:argument数量
prototype:(见第六章。。)
方法
apply(在其中运行函数的作用域,数组/arguments)/call在其中运行函数的作用域,数组中的各项:
把a函数的作用域改成b(在b函数内运行a,把b的参数用到a函数中,作用是扩充运行作用域
例:funtion a(arg1,arg2){~};function b(arg1,arg2){return a.apply(this,[arg1,arg2]/arguments)}
bind()。。

特殊引用类型-基本包装类型
每个基本类型都有一个基本包装类型,
因为基本类型不能用方法,所以当对基本类型使用方法时,他们会默默出现,创建 引用类型的一个实例,执行方法后销毁。所
不建议显式的调用因为new出的东西其实是个object 跟正常的基本类型是不同的,比如new一个boolean,它其实是一个object,值永远是TRUE

二、执行环境及作用域(p73)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。在编写C程序时,需要注意变量的声明和定义、指针的使用、内存的分配与释放等问题。C语言中常用的数据结构包括: 1. 数组:一种存储同类型数据的结构,可以进行索引访问和修改。 2. 链表:一种存储不同类型数据的结构,每个节点包含数据和指向下一个节点的指针。 3. 栈:一种后进先出(LIFO)的数据结构,可以通过压入(push)和弹出(pop)操作进行数据的存储和取出。 4. 队列:一种先进先出(FIFO)的数据结构,可以通过入队(enqueue)和出队(dequeue)操作进行数据的存储和取出。 5. 树:一种存储具有父子关系的数据结构,可以通过中序遍历、前序遍历和后序遍历等方式进行数据的访问和修改。 6. 图:一种存储具有节点和边关系的数据结构,可以通过广度优先搜索、深度优先搜索等方式进行数据的访问和修改。 这些数据结构在C语言中都有相应的实现方式,可以应用于各种不同的场景。C语言中的各种数据结构都有其优缺点,下面列举一些常见的数据结构的优缺点: 数组: 优点:访问和修改元素的速度非常快,适用于需要频繁读取和修改数据的场合。 缺点:数组的长度是固定的,不适合存储大小不固定的动态数据,另外数组在内存中是连续分配的,当数组较大时可能会导致内存碎片化。 链表: 优点:可以方便地插入和删除元素,适用于需要频繁插入和删除数据的场合。 缺点:访问和修改元素的速度相对较慢,因为需要遍历链表找到指定的节点。 栈: 优点:后进先出(LIFO)的特性使得栈在处理递归和括号匹配等问题时非常方便。 缺点:栈的空间有限,当数据量较大时可能会导致栈溢出。 队列: 优点:先进先出(FIFO)的特性使得
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值