Js语法学习实战 -数据类型

news2024/12/22 19:20:33


Js语法学习实战 -数据类型

  • 1. undefined
  • 2. null
  • 3. Boolean
  • 4. Number
  • 5. String
    • 5.1 常用方法
    • 5.2 字符串迭代遍历方法
  • 6. Symbol类型
  • 7. Object
    • 7.1 基本使用
    • 7.2 对象遍历
    • 7.3 复制对象方法
  • 8. 数组 - Array
    • 8.1 数组的常用方法
    • 8.2 数组遍历
  • 9. Function

1

JS语法学习实战系列合集

  javascript包括九种数据类型:1、Undefined;2、Null;3、Boolean;4、Number;5、String;6、Symbol类型;7、Object;8、Array;9、Function。其中,Undefined类型只有一个值,即特殊值undefined。在使用var声明变量,但未对其加以初始化时,这个变量值就是undefined。

1. undefined

  Undefined类型只有一个值,即特殊值undefined。在使用var声明变量,但未对其加以初始化时,这个变量值就是undefined。

回到目录

2. null

  Null类型是第二个只有一个值的数据类型。其特殊值就是Null。从逻辑角度上看,null是一个空的对象指针。而这也正是使用typeof操作符检测null值,会返回“object”的原因。

null和undefined的区别:
1.null:表示值为空,指定和清空一个变量的时候可以使用 age = null
2.undefined:表示从未被定义过,当声明一个变量且未初始化时,该变量的默认值是undefined

回到目录

3. Boolean

  即布尔类型,该类型只有两个值:true、false。需要注意的是,Boolean类型的字面值true和false是区分大小写的。也就是说,True和False(以及其它的混合大小形式)都不是Boolean值,只是标识符。

  1. Boolean函数:
  • 判断为假 - false:0、空字符串、undefined、NaN、null
    1
    当Boolean(表达式)为false时,if(表达式)也为false:
    1
  • 判断为真 - true:除上述外
  1. 布尔值操作:
  • 定义示例:var flag = true;
  • 赋值示例:flag = false;

回到目录

4. Number

  该类型的表示方法有两种形式,第一种是整数,第二种为浮点数。整数:可以通过十进制,八进制,十六进制的字面值来表示。浮点数:就是该数值中必须包含一个小数点,且小数点后必须有一位数字。

回到目录

5. String

  String类型用于表示由零或多个16位的Unicode字符组成的字符序列,即字符串。至于用单引号,还是双引号,在js中还是没有差别的。记得成对出现。
基本定义:

var s1 = "字符串";
var s2 = '字符串';

5.1 常用方法

var l1 = “efghij”;

方法功能示例
.length字符串的长度l1.length
charAt(index)访问字符串中特点字符l1.charAt(1) 等价于 l1[1] -> f
charCodeAt(index)得到字符编码l1.charCodeAt(1) -> 101
concat(str)用于将一个或多个字符串拼接起来,返回拼接后的新字符串l1.concat(“der”) 等价于 l1+“der” -> efghijder
slice(s,e)截取字符串(s子字符串开始位置,e子字符串结束位置)l1.slice(1,5)
substring(s,e)截取字符串(s子字符串开始位置,e子字符串结束位置)l1.substring(1,5)
indexOf(substr)从字符串的开头向后搜索子字符串,返回第一个匹配子字符串的位置,若没有找到,则返回-1l1.indexOf(“krd”) -> -1
lastIndexOf(substr,index)从字符串的末尾向前搜索子字符串,返回第一个匹配子字符串的位置,若没有找到,则返回-1l1.indexOf(“e”) -> 0
trim()删除前置及后缀的所有空格l1.trim()
includes()判断一个字符串是否包含在另一个字符串中,返回 true 或 falsel1.includes(“ef”)->true
startsWith()判断当前字符串是否以另外一个给定的子字符串开头,返回 true 或 falsel1.startsWith(“fs”) ->false
toUpperCase()所有字符转大写l1.toUpperCase()
toLowerCase()所有字符转小写l1.toLowerCase()
match(exe)匹配,接收一个正则表达式或者RegExp对象,结果会返回一个数组bfg
search(exe)检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。返回第一个匹配项的索引,若没有匹配,返回-1。l1.search(“df”)
replace(s1,s2)替换子字符串的方法l1.replace(“gh”,“fe”)
split(s1,index)指定的分隔符将一个字符串分割成多个子字符串,并将结果放在一个数组中l1.split(‘,’, 2) .split(‘,’)
localeCompare(s1)具体返回的正数和负数未必是1和-1,需看实现l1.localeCompare(‘yellow’)
fromCharCode()接收一个或多个字符编码,然后将它们转换成一个字符串var s = String.fromCharCode(104,101,108,108,111)

回到目录

5.2 字符串迭代遍历方法

var str = ‘hello’
(1)循环遍历

for (let i = 0; i < str.length; i++) {
      console.log(str[i]) // 字符串每项的值
}

(2)of 遍历

for (const n of str) {
      console.log(n) // 字符串每项的值
}

(3)in遍历

for (const i in str) {
      console.log(i) // 字符串每项的索引值(string类型)
}

回到目录

6. Symbol类型

  符号 (Symbols) 是 ECMAScript 第 6 版新定义的。符号类型是唯一的并且是不可修改的。Symbol 函数前不能使用 new 命令,否则会报错。这是因为生成的 Symbol 是一个原始类型的值,不是对象。Symbol 函数可以接受一个字符串作为参数,表示对 Symbol 实例的描述

回到目录

7. Object

  Object数据类型,称为对象,是一组数据和功能(函数)的集合。可以用new操作符后跟要创建的对象类型的名称来创建。也可以用字面量表示法创建。在其中添加不同名(包含空字符串在内的任意字符串)的属性。

7.1 基本使用

  1. 自定义对象方法:
    (1)let a = new Object;
    (2)let b = {};let s1 = {'usernane':'xie', 'age':18}
  2. 自定义对象的赋值:对象名.属性名 = 属性值

含有相同的键的赋值,新的赋值会替换原来的值

  1. 自定义对象取值:对象名.属性名
>let a = new Object;
>let b = {};
>let s1 = { 'usernane': 'xie', 'age': 18 }
>a.sex = "女";
>b.sex = "女";
>b.sex = "男";
>s1.sex = "女";
>console.log("a:" + a);
a:[object Object]
>console.log("a.sex:"+a.sex);
a.sex:女
>console.log("b:"+b);
b:[object Object]
>console.log("b.sex:" + b.sex);
b.sex:男
>console.log("s1:" +s1);
s1:[object Object]
>console.log("s1.usernane:" + s1.usernane);
s1.usernane:xie
>console.log("s1.sex:" + s1.sex);
s1.sex:女

7.2 对象遍历

for (var key in s1) {  
    let v = s1[key];
    console.log(key + ":" + v);
}

输出结果:
1

7.3 复制对象方法

(1)遍历每个元素复制:

var obj1 = {};
for (var i in obj) {  //遍历obj对象,把它的所有成员赋值给对象obj1
    obj1[i] = obj[i];
}

(2)直接赋值:直接用=的方式把一个对象赋值给另一个对象,JavaScript 中对象的赋值是默认引用赋值的(两个对象指向相同的内存地址),会导致修改新对象时,原对象也发生变化

var obj1 = {'name': '1111'};
var obj2 = obj1;
obj2.name = '2222';
console.log(obj1.name); //'2222'

(3)使用 Object.assign() 方法复制对象:Object.assign()只是让对象里第一层的数据没有了关联性,但是对象内的对象则跟被复制的对象有着关联性的。

// 使用 Object.assign() 方法复制对象
let obj1 = { a: 0 , b: { c: 0}};
let obj2 = Object.assign({}, obj1);
console.log(JSON.stringify(obj2)); // { a: 0, b: { c: 0}}
 
obj2.a = 2;
console.log(JSON.stringify(obj1)); // { a: 1, b: { c: 0}}
console.log(JSON.stringify(obj2)); // { a: 2, b: { c: 0}}
 
obj2.b.c = 3;
console.log(JSON.stringify(obj1)); // { a: 1, b: { c: 3}}
console.log(JSON.stringify(obj2)); // { a: 2, b: { c: 3}}
  • Object.assign(obj) --浅拷贝
  • Object.assign({},obj) --只有第一层深拷贝 (ES6中扩展运算符…也是如此

回到目录

8. 数组 - Array

  使用单独的变量名来储存一系列值,相当于python中的列表。JavaScript 数组用方括号书写,数组的项目由逗号分隔。
基本定义及使用:

>var l1 = [1,2,3,4,5]
>console.log(l1[1])
2

8.1 数组的常用方法

方法功能示例
.length数组的长度l1.length
.push尾部追加l2.push(1000)
.pop获取尾部元素l2.pop()
.unshift头部插入l2.unshift(200)
.shift()移除头部元素l2.shift()
.slice()切片操作,顾头不顾尾l1.slice(1,3)
.reverse()反转l1.reverse()
.join()将数组元素连接成字符串l1.join()
.concat()连接数组l1.concat(l2)
.sort()排序l1.sort()
.forEach()将数组的每个元素传递给回调函数
.splice()删除元素,并向数组添加新元素l2.splice(0,1,1000)
.map()返回一个数组元素调用函数处理后的值的新数组

回到目录

8.2 数组遍历

arr 是要遍历的数组
(1)循环遍历

for(var i = 0; i < arr.length; i++){
        arr[i] 是遍历的数组的元素,i 是数组的元素对应的下标(索引号)
}

(2)for of 方法

for(var item of arr) {
        item 遍历的数组的元素
}

(3)foreach遍历

arr.forEach(function(item,index,self){
        item 遍历出的每一个元素  index 元素对应的下标   self 数组本身
        无返回值
})
# 示例
var arr = [1,2,3];
arr.forEach(function(item,index,self){
    console.log(index+":"+item);
});

输出:
1
(4)map 映射:

arr.map(function(item,index,self){
        item 遍历出的每一个元素  index 元素对应的下标  self 数组本身
        有返回值  : 数组元素个数不变,但是按照一定的条件转换
})

(5)、filter 过滤

arr.filter(function(item,index,self){
        item 遍历出的每一个元素  index 元素对应的下标  self 数组本身
        有返回值:返回满足某个条件的元素构成的数组

})

(6)reduce 高阶函数(迭代(累加器))

arr.reduce(function(total,item,index,self){
        total 初始值或计算结束后的返回值
        item 遍历出的每一个元素  index 元素对应的下标  self 数组本身
        有返回值 : 返回计算结束后的total值
},初始值);

(7)every

arr.every(function(item,index,self){
		item 遍历出的每一个元素  index 元素对应的下标  self 数组本身
        有返回值 : 检测数组里的每一个值是否满足指定条件:
        			* 如果有一个值不满足,返回false,剩余的值不再进行检测
        			* 如果所有的值都满足,则返回true

});

(8)some

arr.some(function(item,index,self){
       	item 遍历出的每一个元素  index 元素对应的下标  self 数组本身
        有返回值 : 检测数组里的每一个值是否满足指定条件
    	    * 如果有一个值满足,返回true,剩余的值不再进行检测
       		*  如果所有的值都不满足,则返回false
});

回到目录

9. Function

  ECMAScript中的函数是对象,与其他引用类型一样具有属性和方法。因此,函数名实际是一个指向函数对象的指针。

  1. 语法结构
function func(形参){
    函数体代码
    return 返回值
}
  1. 参数:参数个数不需要一一对应 如果需要限制参数个数需要使用关键字arguments
function func(a,b){
    if (arguments===2){
        console.log(a,b)
    }else{
        console.log('参数没有意义对应')
    }
}
  1. 匿名函数
function(a,b) {
    return a-b;
}
  1. 箭头函数
var f = v => v;
等同于
var function f(v){
    return v;
}

示例:

var f = () => 5;
等同于
var f=function(){
    return 5;
}
var sum = (num1,num2) => num1 + num2;
等同于
var sum = function(num1, num2){
    return num1+num2;
}

回到目录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/744959.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

6-Spring cloud之Hystrix容错处理(上)

6-Spring cloud之Hystrix容错处理&#xff08;上&#xff09; 1. 前言1.1 关于雪崩1.1.1 什么是灾难性雪崩1.1.2 服务雪崩形成的原因1.1.3 如何防止灾难性雪崩效应 1.2 前文介绍 2. Hystrix容错处理2.1 项目搭建&#xff08;Ribbon整合Hystrix&#xff09;2.1.1 项目结构2.1.2 …

IOI车机系统刷机和改包笔记

前言 我自己21年买的雪佛兰探界者SUV&#xff0c;没想到到了23年&#xff0c;车机系统上的高德导航还是3.2版本&#xff0c;而官方的已经7.1. 中间出去玩&#xff0c;在高速上被车机上的高德坑了好多次&#xff0c;简直无力吐槽。单纯使用手机Carplay虽然也能完成导航任务&am…

2023年上半年鲁大师电动车综合分数榜解读:九号M95C荣登榜首

2023年上半年电动车综合分数榜单显示了电动车市场的最新发展趋势和品牌表现。 九号M95C获得了第一名&#xff0c;得分798分。九号M95C以其卓越的性能和创新设计脱颖而出。它的高得分主要来自于其强大的续航能力、高速性能和可靠性。九号M95C在电动单车市场中取得了非常好的口碑…

23款奔驰C260L加装原厂香氛负离子系统,清香宜人,久闻不腻

奔驰原厂香氛合理性可通过车内空气调节组件营造芳香四溢的怡人氛围。通过更换手套箱内香氛喷雾发生器所用的香水瓶&#xff0c;可轻松选择其他香氛。香氛的浓度和持续时间可调。淡雅的香氛缓缓喷出&#xff0c;并且在关闭后能够立刻散去。车内气味不会永久改变&#xff0c;香氛…

IPv6 地址简介

IP 地址是指互联网协议地址&#xff0c;它是允许设备连接到互联网的标识符。互联网协议版本 6 &#xff08;IPv6&#xff09; 地址是一个 128 位字母数字标签&#xff0c;用于标识和定位计算机网络中的网络接口卡 &#xff08;NIC&#xff09; 或网络节点。 IPv6由互联网工程任…

C# 圆盘(hsv)颜色选择器

【首先贴上github链接&#xff1a;适用于 Windows 窗体的 Cyotek 拾色器控件】 一、简单使用教程 此处是我使用Cyotek.Windows.Forms.ColorPickers库部分功能的一些经验和思路总结&#xff0c;没有太多深入地去学习&#xff0c;如果有哪位大佬有深入学习使用的话&#xff0c;可…

阿里云限时福利:WoSign品牌SSL证书首购4折优惠

阿里云限时福利&#xff1a;WoSign品牌SSL证书首购4折优惠 阿里云SSL证书限时首购福利&#xff1a;2023年07月04日至08月31日&#xff0c;阿里云平台WoSign品牌系列SSL证书首购4折优惠&#xff0c;惊喜折扣、限时促销、限量抢购&#xff0c;机会不容错过&#xff01; 阿里云平…

PCB防静电设计的必要性

平时通过走路穿衣等日常活动带来的摩擦&#xff0c;会产生不同幅值的静电电压&#xff0c;但其能量很小不会对人体产生伤害&#xff0c;不过对于电子元器件来说&#xff0c;这种静电能量却是不能忽视的。 在干燥的环境下&#xff0c;人体静电(ESD)的电压很容易超过6~35Kv&#…

Ubuntu 22安装使用Codon高性能Python编译器记录

Ubuntu 22安装使用Codon高性能Python编译器记录 Codon 在官方 Ubuntu 存储库中没有直接的教程&#xff0c;但可以尝试如下方法进行安装。 一、更新系统 终端输入&#xff1a; sudo apt update以及 sudo apt upgrade二、安装curl 输入指令&#xff1a; sudo apt install …

DHCP静态分配IP地址、IP-MAC绑定、静态ARP有哪些区别?

DHCP静态分配IP地址、IP-MAC绑定、静态ARP这三个功能都涉及到IP地址和MAC地址的对应关系&#xff0c;但其应用场景及实现的功能有所不同&#xff0c;如表所示&#xff1a; 原文地址https://support.huawei.com/enterprise/zh/knowledge/EKB1000052241

Linux下如何部署Nuxt项目(通过ip直接访问)

一、基础环境准备 1.确定服务器的Linux的系统版本 cat /etc/issue 不要问为什么&#xff0c;问就是吃过大亏 2.确定 node mysql是否安装&#xff0c;版本尽量与本地开发环境一致 如果没有安装建议自己百度一下&#xff0c;要根据Linux系统及版本来进行安装&#xff1b; 二、…

企业信息化-亿发软件,中小企业数字化转型解决方案供应商

因自身规模和企业性质&#xff0c;中小型企业需要有效管理企业资源&#xff0c;因此企业信息化管理至关重要。在此背景下&#xff0c;为中小企业量身定制的信息化管理系统可以为中小型企业带来显著的效益。能够实现数据的迅速整合&#xff0c;便于跨部门的协调和管理&#xff0…

计算机网络|思维导图|自顶向下方法|MindMaps资料分享

前言 那么这里博主先安利一下一些干货满满的专栏啦&#xff01; 手撕数据结构https://blog.csdn.net/yu_cblog/category_11490888.html?spm1001.2014.3001.5482这里包含了博主很多的数据结构学习上的总结&#xff0c;每一篇都是超级用心编写的&#xff0c;有兴趣的伙伴们都支…

【JMeter】同步定时器Synchronizing Timer集合点功能

LoadRunner 中有一个可以设置集合点的功能&#xff0c;顾名思义是设置多个虚拟用户等待到一个时间点&#xff0c;都到齐集合后一起发请求达到并发的目的 集合点是什么意思呢&#xff1f; 阻塞线程&#xff0c;直到指定的线程数量到达后&#xff0c;再一起释放&#xff0c;可以…

【Leetcode】206. 反转链表

题意&#xff1a;反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 一开始需要 cur head pre None 第二步反转指针 cur.next pre 接着再继续移动指针 tmp cur.next // 放在反转之前 pre cur cur tmp 完整…

Java使用JNA调用C文件

1.构建项目 准备最简单的maven项目&#xff0c;结构如下&#xff1a; 引入依赖&#xff1a; <dependency><groupId>net.java.dev.jna</groupId><artifactId>jna</artifactId><version>5.3.1</version></dependency>2.构建c…

2023-7-12-第十七式状态模式

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f4a5;&#x1f4a5;&#x1f4a5;欢迎来到&#x1f91e;汤姆&#x1f91e;的csdn博文&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f49f;&#x1f49f;喜欢的朋友可以关注一下&#xf…

IMPALA 查询优化之元数据

目录 说明 背景 问题复现 环境 sql 排查 分析过程 结果分析 总结 说明 sql优化中重要的一环是查询改写&#xff0c;一个表的元数据有利于sql优化器准确的评估sql代价&#xff0c;获取最佳的sql执行计划&#xff0c;如下图所示&#xff0c;本文验证通过加载刷新impala …

Maya文件加载缓慢,这样处理就可以

将场景加载到Maya中时&#xff0c;需要较长时间才能打开场景。 有时&#xff0c;CPU使用率可能会达到100%。 原因&#xff1a; 在文件上工作一段时间后&#xff0c;场景通常会与未使用的显示层、集和节点混淆。这些未使用的图元可能会导致打开文件时出现滞后。 解决方案&…

CMU 15-445 -- Query Processing - 07

CMU 15-445 -- Query Processing - 07 引言Query ProcessingProcessing ModelIterator ModelMaterialization ModelVectorization Model小结 Access MethodsSequential ScanZone MapsLate MaterializationHeap Clustering Index ScanMulti-index ScanIndex Scan Page Sorting E…