js学习第一周

1.变量

1.变量命名规则

  1. 严格区分大小写
  2. 不能以数字开头
  3. 不能是关键字,保留字,不能用name用作变量名
  4. 小驼峰命名法
  5. 命名符号只能用下划线 _ 和doller $并且中间不能有空格

2.类型推断

JavaScript是一种动态类型的语言,这意味着你不需要在声明变量时指定其类型。JavaScript引擎会根据你赋给变量的值来推断其类型。

3.特点

  1. 只声明但是不赋值-------未定义
  2. 不声明不赋值直接使用-------报错
  3. 不声明直接赋值-------可以

2.数据类型

1.基本数据类型

1.Number

用于表示整数和浮点数。在JavaScript中,所有的数字都是以64位浮点数形式存储的,即使它们被声明为整数。

在数字前面加上0就是八进制

在数字前加上0x就是表示十六进制

alert(Number.Max_VALUE)是数字里面的最大值

alert(Number.Max_VALUE)是最小值

Infinity无穷大 NaN非数字

isNaN()用来判断非数字,如果里面是数字返回假,不是数字返回真

2.String

用于表示文本数据。字符串是Unicode字符序列,由单引号(')、双引号(")或反引号(`)括起来。

字符串拼接直接用“+”, 而且可以拼接变量

转义字符:

在JavaScript中,转义字符用于表示在字符串中不能直接写入的特殊字符。这些特殊字符前面加上反斜杠(\)来“转义”它们,使它们具有特殊的含义或表示一个无法直接输入的字符。以下是一些常用的转义字符:

  1. \n:换行符。在字符串中插入一个新行。
console.log("Hello\nWorld"); // 输出:  
// Hello  
// World
  1. \t:制表符(Tab)。在字符串中插入一个制表符,通常用于缩进。
javascript复制代码console.log("Hello\tWorld"); // 输出:Hello    World(制表符的位置取决于控制台或编辑器的设置)
  1. \\:反斜杠字符本身。由于反斜杠是转义字符的前缀,所以要在字符串中表示一个反斜杠,需要使用两个反斜杠。
javascript复制代码console.log("This is a backslash: \\"); // 输出:This is a backslash: \
  1. \':单引号字符。在单引号字符串中插入单引号字符。
let str = 'This is a string with a \'single quote\' in it.';  
console.log(str); // 输出:This is a string with a 'single quote' in it.
  1. \":双引号字符。在双引号字符串中插入双引号字符。
let str = "This is a string with a \"double quote\" in it.";  
console.log(str); // 输出:This is a string with a "double quote" in it.
3.Boolean

用于表示逻辑值,可以是 truefalse

在加法当中分别表示1和0

4.null

表示一个空值或没有值。null 是一个字面量,表示没有对象值。

5.undefined

undefined 是 JavaScript 中的一个基本数据类型,它表示变量已声明但尚未被赋值。当一个变量被声明了但没有被明确赋值时,它的值就是 undefined。此外,undefined 也可以作为一个全局变量来访问,但它的作用主要是用来表示变量未定义的状态。

未定义类型和数字相加结果是NaN,与字符串相加得到的是undefine和该字符拼接后的结果

2.复杂数据类型

1.Array

用于表示有序的数据集合。数组是特殊的对象,可以包含多个元素(原始值或对象),这些元素可以通过索引来访问。

声明数组:

  1. 利用new关键字

    var arr = new Array(); //创建了一个空数组
    
  2. 利用数组字面量

    var arr = []; //创建了一个空数组
    

调用数组元素:

要修改或者使用数组里面的元素时,都可以通过索引来对其进行操作

新增数组元素:

  1. 通过修改数组长度:每个数组都有一个length属性,表示数组中的元素数量。这个属性是可写的,但通常不建议直接修改它,因为这可能会导致数组中出现未定义的元素。
  2. 追加:通过索引直接向数组后面添加元素。
2.Function

声明函数和调用函数(命名函数):

function functionName(parameters) {  // 函数体,即要执行的代码块  
}  // 示例  
function greet(name) {  console.log('Hello, ' + name);  
}  greet('World'); // 输出 "Hello, World"

函数表达式(匿名函数):

let functionName = function(parameters) {  // 函数体,即要执行的代码块  
};  // 示例  
let greet = function(name) {  console.log('Hello, ' + name);  
};  greet('World'); // 输出 "Hello, World" 

函数参数:

如果实参个数多余形参个数,会按次序取到相应的形参个数

如果少于,那就会给少的形参未定义

函数的返回值:

return只能返回一个值,如果有很多个,那就返回最后一个

要返回多个值的话可以利用数组

如果没有return则返回undefined

arguments:

arguments 是一个类数组对象,它代表了传给函数的参数。这个对象仅在函数体内部可用,并且是自动可用的,无需在函数声明或函数表达式中显式声明。

arguments 的特点:

  1. 类数组对象arguments 对象不是一个真正的数组,但它具有数组的一些特性,比如长度(length)属性和索引。然而,它并不包含数组的所有方法(如 push(), pop(), forEach(), map() 等)。
  2. 自动可用:在函数内部,arguments 对象会自动包含所有传递给函数的参数。
  3. 索引:可以使用索引(从0开始)来访问 arguments 对象的每个元素,就像访问数组元素一样。
  4. length 属性arguments.length 属性表示传递给函数的参数个数。
  5. 与函数参数的区别:虽然 arguments 对象和函数参数在功能上有些相似,但它们是两个不同的东西。函数参数是在函数声明或函数表达式中定义的,而 arguments 对象是在函数体内部自动可用的。
3.Object

对象(Object)是一种复合数据类型,用于存储多个值(称为属性)作为单个实体。这些值可以是原始数据类型(如字符串、数字、布尔值等),也可以是其他对象。对象还允许你定义与这些值相关联的行为(称为方法)。

创建对象:

1.对象字面量:这是创建对象的最常见方式。

let person = {  firstName: 'Alice',  lastName: 'Smith',  age: 30,  greet: function() {  console.log(`Hello, my name is ${this.firstName} ${this.lastName}.`);  }  
};

2.构造函数:使用new关键字和自定义的构造函数函数来创建对象。

function Person(firstName, lastName, age) {  this.firstName = firstName;  this.lastName = lastName;  this.age = age;  this.greet = function() {  console.log(`Hello, my name is ${this.firstName} ${this.lastName}.`);  };  
}  let person = new Person('Alice', 'Smith', 30);

注意调用函数的时候在前面加上new,相当于申请了一个空对象

3.直接创建空对象,然后追加属性:var obj = new Object(); 创建了一个空的对象,然后之后再追加属性和方法

var obj = new Object();  // 添加一个字符串属性  
obj.name = "Alice";  // 添加一个数字属性  
obj.age = 30;  // 添加一个方法  
obj.greet = function() {  console.log("Hello, my name is " + this.name);  
};  obj.greet(); // 输出 "Hello, my name is Alice"
console.log(obj.name); // 输出 "Alice"  
console.log(obj.age);  // 输出 30

对象的属性:

调用属性的方法:

  1. 对象名.属性名
  2. 对象名[‘属性名’] (不要忘记引号)

当调用函数的时候:对象名.方法名() (不要忘记小括号)

遍历对象的属性:

使用 for...in 循环:

for(变量 in 对象) {
console.log(变量) //得到的是属性名
console.log(obj[变量]); //得到的是属性值
}

示例:

var obj = {  name: "Alice",  age: 30,  job: "Engineer"  
};  for (var key in obj) {  if (obj.hasOwnProperty(key)) { // 使用 hasOwnProperty 方法检查属性是否属于对象本身  console.log(key + ": " + obj[key]);  }  
}

3.预解析

运行js分为两步: 预解析 代码执行

  1. 变量提升 就是把所有的变量声明提升到当前作用域的最前面,不提升赋值操作
  2. 函数提升 就是把所有的函数声明提升到当前作用域的最前面,不调用函数

当在函数里面调用var a = b = c = d = 9 时,注意这里只有a是局部变量,其他是全局变量,因为只有a接受声明了

例如:

console.log(myVar); // 输出:undefined  
var myVar = "Hello, World!";

虽然myVar的赋值是在console.log之后,但JavaScript引擎会将var myVar;的声明提升到函数或全局作用域的最顶部。因此,console.log(myVar);不会报错,但会输出undefined,因为变量的赋值还没有发生。

console.log(myFunction()); // 输出:Hello, Function!  function myFunction() {  return "Hello, Function!";  
}

在这个例子中,myFunction函数声明被提升到了最顶部,所以console.log(myFunction());能够正常调用该函数并输出"Hello, Function!"

注意事项

  1. 函数声明与函数表达式:函数声明(使用function myFunction() {...}语法)会被提升,但函数表达式(使用var myFunction = function() {...}let/const myFunction = function() {...}语法)不会被提升。函数表达式是赋值操作的一部分,它们遵循变量提升的规则。
  2. letconst:使用letconst关键字声明的变量不会被提升到其所在作用域的最顶部。相反,它们会被“块级作用域化”,这意味着它们只在声明它们的代码块内可用。此外,letconst声明的变量还有一个“暂时性死区”(Temporal Dead Zone, TDZ),在变量被声明但尚未被赋值之前的区域内引用该变量会导致引用错误(ReferenceError)。

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

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

相关文章

基于JAVA GUI的JDBC连接数据库

要在Java GUI中连接数据库,需要执行以下几个步骤: 导入必要的包。你需要导入Java数据库连接相关的包,例如java.sql和javax.sql。 与数据库连接相关的类和接口。 (1)DriverManger类。DriverManager类用于加载JDBD驱动…

【每日力扣】84. 柱状图中最大的矩形 与 295. 数据流的中位数

🔥 个人主页: 黑洞晓威 😀你不必等到非常厉害,才敢开始,你需要开始,才会变的非常厉害 84. 柱状图中最大的矩形 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为…

redis6.2.7 搭建一主多从

1、集群规划 节点端口角色192.168.137.1026379master192.168.137.1026380slave192.168.137.1036381slave 2、伪集群搭建 2.1 创建fake_cluster 目录存放 公共配置文件 # 进入redis目录 cd /app/apps/redis-6.2.7# 创建存放伪集群的目录 mkdir fake_cluster#复制redis.conf到…

DTC 2024回顾丨云和恩墨重塑数据库内核技术,革新企业降本增效之道

在数字化浪潮席卷全球的当下,关系型数据库作为市场主导力量的地位依然稳固。然而,面对新兴数据库与服务形态的挑战,以及企业日益强烈的降本增效需求,数据库技术的发展必须紧跟时代步伐,充分发挥资源效能以提升企业竞争…

03自动辅助导航驾驶NOA

NOA是自动辅助导航驾驶或领航辅助驾驶的缩写,其全称为Navigate On Autopilot。在设定好导航路线并进入NOA的可使用路段后,驾驶员即可开启辅助驾驶。在A点到B点的过程中,NOA能够实现自动上下匝道、自行超车、自行变道、自适应巡航等多种功能。…

【机器学习300问】99、多通道卷积神经网络在卷积操作时有哪些注意事项?

一、多通道卷积神经网络示例 还是以图像处理为例,如果你的目标不仅是分析灰度图像特性,还打算捕捉RGB彩色图像的特征。如下图,当面对一张66像素的彩色图像时,提及的“3”实际上是指红、绿、蓝三种颜色通道,形象地说&am…

Nginx R31 doc-11-Compression and Decompression 压缩与解压缩

前言 大家好,我是老马。很高兴遇到你。 我们为 java 开发者实现了 java 版本的 nginx https://github.com/houbb/nginx4j 如果你想知道 servlet 如何处理的,可以参考我的另一个项目: 手写从零实现简易版 tomcat minicat 压缩与解压缩 压缩…

Java 简易操作Excel

首先,我们需要创建一个数据库表来存储这些单词及其相关信息。以下是一个简单的SQL语句示例,用于创建这样一个表: sql CREATE TABLE EnglishWords (id INT AUTO_INCREMENT PRIMARY KEY,word VARCHAR(255) NOT NULL,phonetic TEXT NOT NULL,c…

书生·浦语第二期-笔记2

课程链接:https://github.com/InternLM/Tutorial/tree/camp2 视频地址:轻松玩转书生浦语大模型趣味Demo_哔哩哔哩_bilibili 大模型及InternLM介绍 大模型:人工智能领域中参数数量巨大、拥有庞大计算能力和参数规模的模型 特点&#xff1a…

使用json-server来创建mockserver

代替mock模拟数据 1.使用mkdir vue3-ts-server 创建目录 2.npm init -y 生成package.json的依赖配置文件 详见json-server - npm 3.cnpm install json-server -S 4.目录结构是data,public,src{app.js , router.js , db.js &…

【Linux杂货铺】进程通信

目录 🌈 前言🌈 📁 通信概念 📁 通信发展阶段 📁 通信方式 📁 管道(匿名管道) 📂 接口 ​编辑📂 使用fork来共享通道 📂 管道读写规则 &…

初中英语优秀作文分析-002Who stole the cupcake-谁偷了纸杯蛋糕?

更多资源请关注纽扣编程微信公众号 记忆树 1 One Sunday afternoon, Leslie was at home with her kids, 3-year-old Angel, 6-year-old Carl, and 7-year-old Tony. 翻译 一个周日的下午,Leslie和她的孩子们在家,他们是3岁的Angel,6岁的…

镜子摆放忌讳多

镜子是我们日常生活中不可或缺的物品。在风水中,镜子的作用非常多,能够起到一定的作用。镜子的摆放位置也是非常有讲究的,摆放不好会直接影响到家人的事业、财运、婚姻乃至健康等诸多方面。 第一个风水忌讳,镜子对大门。大门的正前…

Linux防火墙之iptables(二)

一.SNAT策略概述 1.SNAT 策略的典型应用环境 局域网主机共享单个公网IP地址接入Internet(私有IP不能在Internet中正常路由) 局域共享上网 2.SNAT 策略的原理 源地址转换,Source Network Address Translation 修改数据包的源地址 未作SNAT转换…

用three.js+echarts给公司写了一个站点数据大屏系统经验总结

时间过的好快,参加公司的新项目研发快一年了,五一机器人项目首秀,我们遇到了高并发集中下单情景,然后海量数据处理场景来了,给我在后端领域的高并发实践业务上画上了漂亮的一笔经验。人都是在磨练中成长,我很感谢这次给我的机会,虽然有点累,但也有点小成就。正好现在有…

时隔一年半。。。

大概一年半的时间没登录,经历了蛮多事情,包括不满,辞职,备考,笔试,面试… 大体上是蛮幸运的,又要去新的单位工作了,第一份事业编的工作做得真的很痛苦,大概是因为丢掉了专…

AGI系列(1):掌握AI大模型提示词优化术,提问准确率飙升秘籍

当我们向AI大模型提问时,通常人们的做法是有什么问题,就直接去问,得到大模型的回复结果,时好时坏,完全没有可控性。 那么有没有一种方式或是一套方法,可以让我们向大模型提问时,得到的结果更准确…

nacos 2.3.3 Windows系统安装详细版

1,下载 https://github.com/alibaba/nacos/releases 2,解压 3,将nacos的内置库(derby),修改为我们自己的 mysql 3.1 创建一个数据库 3.2 连接数据库 3.3 执行mysql 脚本,在nacos的conf 目录下 mysql-schema.sql 执…

Python | R | MATLAB高斯过程统计模型

📜随机统计模型-用例 📜海上风电场模型 | 📜天气和建筑设计模型 | 📜不确定性量化应用模型 | 📜马尔可夫链蒙特卡罗算法多模态采样贝叶斯模型 | 📜分类过程最大似然模型 | 📜C和Python通信引文…