【Javascript】基础知识

news2024/9/22 23:26:05

文章目录

  • 01 变量的声明
  • 02 数据类型
    • 字符串型
    • boolean类型
    • undefined null类型
    • symbol类型
    • 超大整数 bigint
    • 数组类型
    • 普通对象

01 变量的声明

02 数据类型

复习:

声明

​ 声明变量关键词

​ let

​ const

​ 变量名 =>变量命名规范

​ 英文 数字 _ $不要以数字开头

​ 见名知意

​ 不能使用关键字 保留字

​ = 赋值 先看右侧 右侧运算完毕才把结果返回给 变量存储

let 声明变量的情况

​ 常规:

​ 1.声明变量且赋值
2.声明但不赋值
3、声明变量 右侧运算完毕再赋值
4、重复声明,会报错
6、一次性声明多个变量

let abc=1+2,
b=‘1’
c=‘2’
d='3‘

7.不带声明声明关键词 直接赋值的操作
8.不声明直接使用 报错
const 声明变量的情况
1.声明但不赋值 报错
2.重复赋值 后面的值 会覆盖前面的值 报错

数字 ==>数值型 Number
1、 基础数字类型 7种

  • Number 数值型
  • String 字符串型
  • Boolean 布尔类型
  • Undefined 未定义
  • Null 空对象
  • Symbol 符号 es6补充
  • Bigint 大整数 es11补充

2、复杂数据类型 1种

  • Object 对象
    typeof 大致准确的判断 会有点bug

1.数值字面量(一眼就能看到值 叫法 123 一个字面量)
2.属于数值类型的数据
整数 1 2 3
小数 1.1 1.3
二进制 0b11=3
八进制 0o70
十六进制 0xA
特殊的数值 NAN=>坏掉的数值 NaN无法和其他 NaN相等
3.浮点数 运算 精度丢失的问题(超大整数 也有精度丢失的问题)
由于双精度存储的问题 占用的内存更大 丢失精度 =>运算 不准确
4.表示数字的范围
表示数字的最大2^1023 到2^1024之间 无限接近2……1024
超过这个范围 Infinity 无穷大 也有有-无穷大 -2^1024
最大整数的范围 2^53 在这个范围内 整数运算才准确

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        let num1 = 123;
        let num2 = 0b11;
        let num3 = 0o70;
        let num4 = 0xA;
        let num5 = 0/0;
        let num6 = 0/0;
        console.log( typeof 1)
        console.log(num1)
        console.log(num2)
        console.log(num3)
        console.log(num4)
        console.log(num5)
        console.log(num5==num6)
        //  浮点精度丢失
        console.log(0.1+0.2)
        // 解决方法
        console.log((0.1 * 10 + 0.2 * 10) / 10); 
        // 无限大
        console.log(2**1024)
        console.log(2**53)
    </script>
</body>
</html>

在这里插入图片描述

字符串型

字符串的字面量 ’ ’ " " unicode(存放多国语言文字 和 符号)
es6模板字符串 ` `
区分: 普通字符串 ’ ’ " " 字符不能换行
模板字符串 可以换行

字符串内引号的使用

  • '‘内部使用”“ 如果说非要’'进行转义 \ ’ 反斜杠 js识别为普通字符
  • “” 内部使用 ‘’
  • ``里面 单双引号都可以正常使用

转义符

  • ’ , \n换行 ,\ \ 普通反斜杠 \ t制表符

在字符串内使用变量

  • 普通字符串内使用变量
    • ’ ': ’ +变量+'打包放入对应的需要放变量的位置(原理是字符串的拼接)
    • " ": "+变量+”
  • 模板字符串内
    • ${变量} 放入对应需要放变量的位置 ${}

字符串.length 表示 字符串属性 字符长度(不常用)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    let str='093345 \\\'haon';
    console.log(str)
    let str1=1111
    console.log(str1)
    let str2="我爱你"
    console.log(str2)
    let str3=`
    '' 你好
    <div>
        </div>
    
    `
    console.log(str3)
    let str4='<div>'+ str2+'<div>'
    console.log(str4)
    let str5=`<div>${str1}${str4}</div>`
    console.log(str5)
    console.log(str.length)
</script>
</html>

在这里插入图片描述

boolean类型

布尔类型 用于判断
Boolean :true false 类型转换

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    let bool=true
    let bool1=false
    let bool2=Boolean(true)
    console.log(typeof bool2)
    console.log(bool2)
</script>
</html>

在这里插入图片描述

undefined null类型

  • undefined 类型里 就一个值 undefined
    • 未赋值的变量初始值 undefined
    • 函数 默认值返回undefined
  • null类型 就一个值null 空对象
    • 为赋值的变量 未来赋值给一个复杂型数据类型时 初始的时候 可以赋值给Null
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    let  a;
    console.log(a);
    function fn(){
        console.log(1);
    }
    console.log(fn());
</script>
</html>

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    let  a = null;
    let b ;
</script>
</html>

在这里插入图片描述

symbol类型

symbol 对象 若干的属性 想对这个对象进行拓展–>新增一些属性 属性名 重复了 导致bug 独一无二的属性 属性---->挂载在对象身上(要对已经存在的对象 扩展属性的时候 为了避免和已有属性名发生冲突 使用symbol产出的独一无二的值 作为属性名)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>


    let a = Symbol('1'); //独一无二的symbol值
    let sym1 = Symbol('1');//独一无二的symbol值
    console.log(a);
    Number.a = 1 //挂载了一个普通a属性名 = 1
    Number[a] = 2 //率先识别为变量
    console.dir(Number)
</script>
</html>

在这里插入图片描述

超大整数 bigint

解决 2的53次方 运算是有问题的

字面量

  • let numB=1n
  • numB1=BigInt(123)
    注意:bigint数据类型 可以和bigint的数值进行运算 (不可以和数值进行运算)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
 

    let maxNum=Number.MAX_SAFE_INTEGER;
    console.log(maxNum)
    let numB=1
      console.log(numB == 1)
    let numB1=9007199254740992n
      console.log(numB1)
    let numB2=BigInt(123);
    console.log(numB2)
</script>
</html>

在这里插入图片描述

数组类型

Object : 数组 ,普通对象 ,函数 ,内置对象 ,Data ,Math…

  • 数组 Array 存储多个数据 -----> 对象 任意数据类型 都可以接收
    let arr = [“a”,“b”,‘c’,‘d’]
    let arr1 = Array([“a”,“b”]) Array() 接收arr1里面的数据 ==> [[“a”,“b”]]
    let arr2 = Array(“a”,“b”) [“a”,“b”] ( 一般不会通过这种方式去进行创建 )
  • 如何把数组内的数据 拿出来 使用
    • 通过序号(索引值)取值 arr[序号数字] 序号 (索引值)第一个数据开始算 0开始 (取到arr里 没有的值===>undefined)
  • 多维数组
    let arr1 = [ //二维
    [“商品1”,“商品1.1”[[]],],
    [“商品2”,“商品2.1”],
    [“商品3”,“商品3.1”]
    ]
  • 属性 arr,length 重要 返回数组数据的个数
    arr 对象有很多可以用于操作数据的好用的方法
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
   
</body>
<script>
    let arr = ["a","b",'c','d']

// 添加
arr[4] = 'e'
arr[5] = 'f'

//修改
arr[0] = "g"  

arr[1] = 'h' 

console.log(arr);



// let arr1 = [
//   ["商品1","商品1.1"],
//   ["商品2","商品2.1",["商品4"]],
//   ["商品3","商品3.1"]
// ]   


// console.log(arr.length);  

// console.log(arr[arr.length - 1]); 

// console.log(arr.length - 1);
// console.log(arr1[1][2][0]); 

// console.log(window);

</script>
</html>

普通对象

属性名: 属性值 键值对的形式 去进行多个数据的存储
eg:div 介绍歌手–> 歌手名字,代表作 ,详细介绍
属性名: 不需要进行声明 name====>“name” 所有的属性名 都是字符串型
== 取值== console.log(obj.name) ; .取值 是大部分情况用的
特殊情况1 属性名 不可以在obj后 .数字 字符串(可能会造成语法问题的属性名)来操作的 就要用[ ]代替.操作值
特殊情况2 使用变量取值 ·

  1. 对象.obj obj会识别为 对象的属性名 而不会识别为变量
  2. 对象[obj] obj 会识别为变量 而不是属性名

== 修改和添加 ==

obj.str=‘我是重新赋的值’
obj.age=3
obj.sex=‘女’(添加)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    let str='hobby'
    let obj={
        name:'忸怩',
        age:23,
        1:'abc',
        "b d c":"123",
        str:"我是obj里面的str的数据",
        arr:[],
        obj1:{}
    }
     obj.str='我是重新赋的值'
    obj.age=3
    obj.sex='女'
    console.log(obj)
      // let sym = Symbol('1')

    // obj[sym] = '美女'      
    console.log(obj);



    console.log(obj["1"]);

    console.log(obj["b b c"]);

    //通过str变量 取 '睡觉'这个数据

    console.log(obj.str);

    console.log(obj[str]); 
    //obj[str] ==> obj["hobby"]

    console.log(obj['str']);
    let arr = []
    let arr1 = []
    console.log(typeof arr); //object
    console.log(typeof obj); //object

    console.log(typeof null);//object typeof 的bug之一  


    console.log([] === []); 
</script>
</html>

在这里插入图片描述

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

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

相关文章

深度学习之tensorboard可视化工具

(1)什么是tensorboard tensorboard是TensorFlow 的一个可视化工具包&#xff0c;提供机器学习实验所需的可视化和工具&#xff0c;该工具的功能如下&#xff1a; 跟踪和可视化指标&#xff0c;例如损失和精度可视化模型图&#xff08;操作和层&#xff09;查看权重、偏差或其…

【Java多线程学习4】volatile关键字及其作用

说说对于volatile关键字的理解&#xff0c;及的作用 概述 1、我们知道要想线程安全&#xff0c;就需要保证三大特性&#xff1a;原子性&#xff0c;有序性&#xff0c;可见性。 2、被volatile关键字修饰的变量&#xff0c;可以保证其可见性和有序性&#xff0c;但是volatile…

uniApp 对接安卓平板刷卡器, 读取串口数据

背景: 设备: 鸿合 电子班牌 刷卡对接 WS-B22CS, 安卓11; 需求: 将刷卡器的数据传递到自己的App中, 作为上下岗信息使用, 以完成业务; 对接方式: 1. 厂家技术首先推荐使用 接收自定义广播的方式来获取, 参考代码如下 对应到uniApp 中的实现如下 <template><view c…

python数据可视化Matplotlib

1.绘制简单的折线图 # -*- coding: utf-8 -*- import matplotlib.pyplot as pltinput_values [1, 2, 3, 4, 5] squares [1, 4, 9, 16, 25] plt.style.use(seaborn) fig, ax plt.subplots() ax.plot(input_values, squares, linewidth3) # 线条粗细# 设置图表标题并给坐标…

2023年第四届“华数杯”数学建模思路 - 复盘:光照强度计算的优化模型

文章目录 0 赛题思路1 问题要求2 假设约定3 符号约定4 建立模型5 模型求解6 实现代码 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 问题要求 现在已知一个教室长为15米&#xff0c;宽为12米&#xff0…

less的使用

less的介绍&#xff1a; less使用 1、 less使用的第一种用法&#xff0c;起变量名&#xff0c;变量名区分大小写&#xff1a; 这里我们定义一个粉色变量 我想使用直接把变量拿过来就行 2、vscode使用插件&#xff0c;直接将Css文件转换less文件&#xff1a; 3、第二种用法&…

8.泛型

目录 1 基本使用 2 多个泛型 3 泛型约束 3.1 数组 3.2 extends约束 3.3 用泛型约束泛型 4 泛型接口 5 ts中的数组用的就是泛型 6 泛型类 7 常用泛型工具类型 7.1 让所有属性变为可选属性 Partial 7.2 将所有属性都变为只读属性 Readonly 7.3 从指定类…

git-版本控制器

集中式版本控制工具&#xff08;不常用&#xff09; 版本库集中于中央服务器&#xff0c;team要联网才能工作&#xff08;下载代码&#xff09; SVN CVS 分布式版本控制工具 每个电脑上都有一个完整的版本库&#xff0c;工作时无需联网&#xff0c;可以把修改推送给其他人来…

ThreadLocal有内存泄漏问题吗

对于ThreadLocal的原理不了解或者连Java中的引用类型都不了解的可以看一下我的之前的一篇文章Java中的引用和ThreadLocal_鱼跃鹰飞的博客-CSDN博客 我这里也简单总结一下: 1. 每个Thread里都存储着一个成员变量&#xff0c;ThreadLocalMap 2. ThreadLocal本身不存储数据&…

python爬虫(四)_urllib2库的基本使用

本篇我们将开始学习如何进行网页抓取&#xff0c;更多内容请参考:python学习指南 urllib2库的基本使用 所谓网页抓取&#xff0c;就是把URL地址中指定的网络资源从网络流中读取出来&#xff0c;保存到本地。在Python中有很多库可以用来抓取网页&#xff0c;我们先学习urllib2。…

docker minio安装

1.介绍 Minio是一款开源的对象存储服务&#xff0c;它可以在任何硬件或云平台上提供高性能、高可用性和高安全性的存储解决方案。Minio最新版是2021年11月发布的RELEASE.2021-11-24T23-19-33Z&#xff0c;它带来了以下几个方面的改进和新特性&#xff1a; - 支持S3 Select AP…

Allegro选择暗显模式仍然无法实现暗显模式的解决办法

Allegro选择暗显模式仍然无法实现暗显模式的解决办法 用Allegro进行PCB设计的时候,时常需要使用到暗显模式,让视图中未被高亮的图形暗显下去,如下图 左边是未高亮的网络,右边是已高亮的 但是有时候因为一些原因,导致无法暗显,如下图 下面介绍如何解决这个问题,具体操作…

CSPM认证的价值?

最近 CSPM 证书很热门&#xff0c;含金量高&#xff0c;CSPM证书虽然发起的时间不长&#xff0c;但获取 CSPM 证书也是目前发展的一个趋势。如果打算在项目管理领域发展的强烈建议尽快获取 CSPM&#xff0c;提前为自己积攒一些资本。 一、什么是 CSPM证书&#xff1f;跟PMP是什…

Java-API简析_java.io.FileWriter类(基于 Latest JDK)(浅析源码)

【版权声明】未经博主同意&#xff0c;谢绝转载&#xff01;&#xff08;请尊重原创&#xff0c;博主保留追究权&#xff09; https://blog.csdn.net/m0_69908381/article/details/132038909 出自【进步*于辰的博客】 因为我发现目前&#xff0c;我对Java-API的学习意识比较薄弱…

elasticsearch 将时间类型为时间戳保存格式的时间字段格式化返回

dsl查询用法如下&#xff1a; GET /your_index/_search {"_source": {"includes": ["timestamp", // Include the timestamp field in the search results// Other fields you want to include],"excludes": []},"query": …

DevOps系列文章之 Docker 安装 NFS 服务器

Docker 安装 NFS 服务器 环境&#xff1a; 192.186.2.105 NFS 服务器 192.168.2.106 Client 客户端 安装 一、服务器端 https://github.com/f-u-z-z-l-e/docker-nfs-server 1、创建目录 mkdir /nfsdata mkdir -p /docker/nfs/2、启动脚本 vim start.sh# 内容 docker run …

ConCurrentHashMap常见面试题

1. JDK1.7和JDK1.8中ConCurrentHashMap的实现有什么不同&#xff1f; JDK1.7中的实现可以认为是大数组套小数组&#xff0c;大数组是Segment数组&#xff0c;小数组是HashEntry数组&#xff0c;锁是锁在大数组的元素上&#xff08;Segment&#xff09;&#xff0c;力度比较大&…

使用vs 2017 C#项目发布

C#项目发布 vs 2017 打包项目源代码 (发布)iis 配置添加ssl 配置 vs 2017 打包项目源代码 (发布) iis 配置 添加ssl 配置 https://help.aliyun.com/zh/ssl-certificate/user-guide/install-ssl-certificates-on-iis-servers

软考A计划-系统集成项目管理工程师-项目沟通管理-上

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 &#x1f449;关于作者 专注于Android/Unity和各种游…

Java反射(三)

目录 1.反射与代理设计模式 2.反射与Annotation 3.自定义Annotation 4.Annotation整合工厂设计模式和代理设计模式 1.反射与代理设计模式 代理模式是指通过业务真实类实现业务接口&#xff0c;再通过设置代理类创建业务真实类子类从而间接访问业务真实类。但是这存在一个弊…