软件设计之JavaScript(1)

news2024/11/15 23:24:15

软件设计之JavaScript(1)

【狂神说Java】JavaScript最新教程通俗易懂

学习内容:

软件开发技能点参照:软件开发,小白变大佬,这套学习路线让你少走弯路是认真的,欢迎讨论
软件开发技能点顺序参照:Java学习完整路线,强烈建议收藏转发

  1. 什么是JavaScript
  2. 引入JS
  3. 数据类型
  4. 函数
  5. 变量作用域
  6. 方法

1、什么是JavaScript

JavaScript是一门脚本语言
一个合格的后端人员,必须要精通JavaScript
ECMAScript可以理解为是JavaScript的一个标准

2、引入JS

在这里插入图片描述

Script内语句

var num = 1;设置变量时出现warning:'var' used instead of 'let' or 'const'
解决方法

  <script >
      //1. 定义变量 变量类型 变量名 = 变量值
      var num1 = 1;
      var num2 = 2;
      //条件控制
      if (num1>num2){
          alert("true");
      }else{
          alert("false");
      }
  </script>

严格审查模式

前提:IDEA需要设置支持ES6语法
严格审查模式预防JS的随意性导致产生一些问题
局部变量建议使用let定义

 <script >
      `use strict`;
  </script>

console.log(var)

在浏览器控制台打印变量
在这里插入图片描述
在这里插入图片描述

3、数据类型

number

JS不区分小数和整数,Number
在这里插入图片描述

字符串

正常字符串使用单引号或双引号
多行字符串编写用这个包裹 ``(TAB键上面的)
字符串仍不可变

模版字符串

此处的是TAB上的``

  <script >
      `use strict`;
      let name = "小明"
      let msg = `你好,${name}`
      console.log(msg)
  </script>
substring

从第一个字符串截取到最后一个字符串 X.substring(1)
从第一个字符串截取到第三个字符串 X.substring(1,3)

布尔值

true,false

逻辑运算

&& 与
|| 或
! 非

比较运算符

=
== 等于 (类型不一样,值一样,也会判断为true)
=== 绝对等于(类型一样,值一样,结果true)
注意NaN与所有的数值都不相等,包括自己 (NaN===NaN返回false)
可以通过isNanN()方法返回值判断是否为NaN,true为是;false为否

浮点数问题

第一行代码结果是false

在这里插入图片描述

数组

假如给数组的length属性赋值,数组大小会发生变化。赋值过小,元素会丢失
indexOf通过元素获取下标索引
slice() 截取Array一部分,返回一个新数组
push:从尾部添加
pop:从尾部弹出

在这里插入图片描述

对象

每个属性用逗号隔开,键值对描述属性 XXXX: xxxx
取对象用 Person.age
对象赋值直接赋值 person.name = “xxx”
使用一个不存在的对象属性不会报错–>输出undefined
JS中所有的键都是字符串,值是任意对象

  <script >
        var Person = {
            name:"中国",
            age:3,
            tags:["js","java"]
        }
  </script>
动态删减/添加属性

通过delete删除对象的属性
直接给新的属性添加值就可以实现动态添加

判断属性值是否在对象中

xxx in xxx 返回布尔类型

'age' in person
全局对象window

默认所有的全局变量,都会自动绑定在window对象下

<script>
var x = 'xxx';
alert(x);
alert(window.x)//等价
</script>

在这里插入图片描述

Map与Set

Map:键值对集合数据结构
Set:无序不重复集合

Map

在这里插入图片描述

Set

在这里插入图片描述

iterator循环遍历
  <script >
      `use strict`;
        let map = new Map([["tom",1],["jack",2]]);
        for (let x of map){
            console.log(x)
        }

        let set = new Set([5,6,7]);
      for (let x of set){
          console.log(x)
      }
  </script>

4、函数

定义函数

如果没有执行return,函数执行完也会返回结果,结果为:undefined
在JavaScript中,函数是一等公民,这意味着函数可以被赋值给变量、作为参数传递给其他函数、或作为其他函数的返回值。此外,函数在JavaScript中也充当构造函数的角色,用于创建对象。

  <script >
      `use strict`;
      // 方法一
        function abs(x){
            if (x>=0){
                return x;
            }else{
                return -x;
            }
        }
        let abs1 = function (x){
            if (x>=0){
                return x;
            }else{
                return -x;
            }
        }
  </script>

调用函数

参数问题:JS可以传任意个参数,也可以不传递参数

不存在参数,如何规避

手动抛出异常来判断

  <script >
      `use strict`;
        let abs1 = function (x){
            if (typeof x !=='number'){
                throw 'Not a Number'
            }
            if (x>=0){
                return x;
            }else{
                return -x;
            }
        }
  </script>

在这里插入图片描述

参数存在多个

arguments是一个JS的关键字,代表传递进来的所有参数,是一个数组
(ES6引入)rest获取除了已定义的参数之外的所有参数

  <script >
      `use strict`;
        function aaa(a,b,...rest) {
            console.log("a=>"+a);
            console.log("b=>"+b);
            console.log(rest);
        }
  </script>

在这里插入图片描述

5、变量的作用域

在JS中,var定义的变量是有作用域的
var变量在函数体中声明,则在函数体外不可用
在这里插入图片描述
如果两个函数使用相同变量名,只要在函数内部,则不冲突

  <script >
      `use strict`;
        function aaa(x) {
            var x = 1;
        }
        function bbb(x) {
            var x = 'A';
        }
  </script>

内部函数可以访问外部函数的成员,反之不行
JS中函数查找变量从自身函数开始,由内向外,当内部没有该变量时,会去外部查找

  <script >
      `use strict`;
        function aaa() {
            var x = 1;
            function bbb() {
                var x = 'A';
                console.log(x);
            }
            console.log(x);//1
            var z = y + 1 //ReferenceError: y is not defined
            bbb();//A
        }
  </script>

局部作用域let

ES6 let关键字,解决局部作用域冲突问题

  <script >
      `use strict`;
        function aaa() {
            for (var i = 0; i < 100; i++) {
                console.log(i);
            }
            console.log(i)//100,正常情况是不能输出i的
        }
  </script>

提升变量作用域

规范:所有变量的定义都放在函数的头部,不能随用随定义,便于代码维护。

在这里插入图片描述

全局函数

在这里插入图片描述

6、方法

对象只有属性方法
方法的定义:把函数放在对象里
调用属性: func.name
调用方法:带括号 func.age()

调用方法1
  <script >
      `use strict`;
        var func = {
            name:'计算年龄',
            birth:1999,
            //方法
            age:function () {
                var now = new Date().getFullYear();
                return now - this.birth;
            }
        }
  </script>
调用方法2

其中 func.age()是正确使用
直接getAge()会报错NaN,因为this此时代表的是window,window没有birth属性
this的指向是可以通过apply进行改变的
getAge.apply(func,[]) //此时this指向对象func,getAge方法参数为空所以是[]

  <script >
      `use strict`;
      function getAge() {
          var now = new Date().getFullYear();
          return now - this.birth;
      }
        var func = {
            name:'计算年龄',
            birth:1999,
            //方法
            age:getAge()
        }
  </script>

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

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

相关文章

“前缀和”专题篇一

目录 【模版】前缀和 【模版】二维前缀和 寻找数组的中心下标 除自身以外数组的乘积 【模版】前缀和 题目 思路 这道题如果使用暴力解法&#xff0c;即针对每次查询&#xff0c;先算出前r个数的总和&#xff0c;然后再算出前l-1个数的总和&#xff0c;然后相减就得出本次查…

2.类和对象(上)

1. 类的定义 1.1 类定义格式 • class为定义类的关键字&#xff0c;Stack为类的名字&#xff0c;{ }中为类的主体&#xff0c;注意类定义结束时后面分号不能省略。类体中内容称为类的成员&#xff1a;类中的变量称为类的属性或成员变量; &#xff08;类和结构体非常像&#…

12-利用Excel创建IC类元件库

1.新建excel文件 2.找到模型向导 3.修改属性

技术速递|.NET Aspire 8.1 中面向云原生开发人员的新增功能!

作者&#xff1a;Mitch Denny 排版&#xff1a;Alan Wang 5 月份&#xff0c;我们向全世界发布了 .NET Aspire 的第一个正式版本。.NET 社区的热烈响应令我们深受鼓舞&#xff0c;在大家首次试用时&#xff0c;我们一直在积极倾听并与开发人员互动。 今天&#xff0c;我们很高…

EF Core连接PostgreSQL数据库

PostgreSQL数据库介绍 PostgreSQL是一个功能强大的开源对象关系型数据库管理系统&#xff08;RDBMS&#xff09;。最初于1986年在加州大学伯克利分校的POSTGRES项目中诞生&#xff0c;PostgreSQL以其稳定性、灵活性和扩展性而著称。它支持丰富的数据类型、复杂的查询、事务完整…

C语言进阶(3)

1.数组传参 一维数组传参的时候使用数组名&#xff0c;代表数组首元素的地址&#xff1b;函数接受时形参可以是数组形式&#xff0c;也可能是指针形式&#xff0c;数组形式比较简单数组怎么写&#xff0c;函数接受是就怎么接受,使用指针就要将指针类型写清楚&#xff0c;如下 …

一文搞懂MES、ERP、SCM、WMS、APS、SCADA、PLM、QMS、CRM、EAM及其关系

MES、ERP、SCM、WMS、APS、SCADA、PLM、QMS、CRM、EAM各个系统到底是什么意思&#xff1f;今天一文就给大家分享&#xff01; 在企业管理中&#xff0c;各种信息系统扮演着至关重要的角色&#xff0c;它们如同企业的神经系统&#xff0c;确保各个部分高效协同运作。 MES&#…

微信小程序项目开发【从0到1~入门篇】

创建第一个小程序 1、小程序简介2、第一个小程序&#xff1a;注册小程序开发账号3、第一个小程序&#xff1a;安装开发者工具3.1 了解微信开发者工具3.2下载安装3.3 扫描登录 4、创建小程序项目5、小程序代码的构成5.1json配置文件5.2WXML模板5.3WXSS样式5.4JS 逻辑交互 6、宿主…

HDMI线连接显示器后色彩灰暗问题解析与解决方案

随着科技的快速发展&#xff0c;HDMI线已成为连接电脑与显示器的重要工具。然而&#xff0c;当HDMI线连接显示器后&#xff0c;有时会遇到显示器色彩灰暗的问题。本文将针对这一问题进行深入解析&#xff0c;并提供相应的解决方案。 一、HDMI线连接显示器后色彩灰暗的原因 1. …

C++ SQL ORM

测试代码 // // Created by www on 2024/8/7. // #include "sqlitepp/database.h" #include "sqlitepp/condition.h"#include <iostream> using namespace sqlitepp; using namespace sqlitepp::literals;enum class test_enum {hello };void test…

Matplotlib | 绘制折线图

目录 简介安装 Matplotlib开始绘制简单折线图改变线的样式改变节点的样式添加图表文字改变坐标轴标签改变坐标数值范围绘制多条折线实践&#xff1a;绘制温度变化图 简介 折线图&#xff08;Line Chart&#xff09;&#xff0c;是一种以折线来呈现数据随时间变化而变化的图表。…

上翘机头设计确保了机器人在与杆子正面碰撞后,平稳从水平飞行状态重新调整为垂直飞行状态,进而用翅膀紧紧抱住杆子,实现稳定的栖息

带翼无人驾驶飞行器&#xff08;UAV&#xff09;因其出色的单位质量续航能力&#xff0c;特别适用于远距离任务&#xff0c;如送货、测绘和搜索救援。然而&#xff0c;与有翼飞行动物相比&#xff0c;它们在复杂结构上的着陆或栖息能力受限&#xff0c;难以执行检查、操作、监控…

for循环中的setTimeout的几种情况

for循环中的setTimeout的几种情况 在做js相关的题目时&#xff0c;经常会遇到以下几种容易混淆的setTimeout相关的题目&#xff1a; 第一种 for(var i0;i<10;i){setTimeout(console.log(i),0); }在这个代码片段中&#xff0c;setTimeout 的第一个参数是 console.log(i)&…

Qt QTableWidget 去除序号列

ui->tableWidget->verticalHeader()->setHidden(true);//垂直序列号&#xff08;表左侧&#xff09;ui.tableWidget->horizontalHeader()->setHidden(true);//水平序列号&#xff08;表上方&#xff09;删除后效果图&#xff1a;

Aurora64B 66B IP的原理及示例工程分析(高速收发器二十四)

点击进入高速收发器系列文章导航界面 1、Aurora 64B/66B原理 Aurora 64B/66B的原理与Aurora 8B/10B的原理基本上一致&#xff0c;通道概述如下所示。 图1 Aurora 64B/66B概述 上图的Aurora 64B/66B Core就是该IP&#xff0c;一个IP可以驱动多个高速收发器&#xff0c;该内核的主…

虚拟机(VMware16)安装rocky9.2详细过程,附镜像下载链接

rocky官方站点 链接: 官方站点 rocky9.2镜像下载路径 链接: Rocky-x86_64-dvd.iso 打开虚拟机&#xff0c;选择新建虚拟机 新建虚拟机 选择典型 由于VMware16没有rocky的版本&#xff0c;所以我们这里选择其他liunx 5.x 内核 64位 因为rocky9默认内核版本就是5开头的&#xf…

高频焊机逆变电路谐波计算及分析

一、SPWM谐波分析 简化高频焊机逆变模块为图4-6的单相PWM逆变电路。它由一个大小为u0的直流电压源和两个桥臂组成&#xff0c;每个桥臂包括两个MOSFET全控器件&#xff0c;阻抗Z模块为逆变输出负载[26]。逆变控制器的控制算法为双极性SPWM算法&#xff0c;即通过正弦调制波和三…

Unity Addressables bundle依赖查看和资源重复查看工具

在开发的过程有时候想要知道addressables 打包出来bundles的依赖关系&#xff0c;以及资源的重复情况。直接通过自带的addressables工具查看有点困难。这里分享一个github上的开源工具。名称为UnityAddressablesBuildLayoutExplorer。该工具可以帮助查看所有文件的依赖情况&…

在Visual Studio/Qt Creator 中使用CMake安装和使用vcpkg包

文章目录 0. vcpkg简介和安装0.1 vcpkg简介0.2 vcpkg安装0.2.1 如何在Visual Studio 2022以及以上版本中安装vcpkg0.2.2 在其他VS版本或Qt Creator等平台上中安装vcpkg 1. 在Visual Studio 中使用CMake安装和使用vcpkg包1.1 创建Visual Studio项目1.2 设置项目文件a. 配置CMake…

线性方程组迭代算法的Python实现

更多精彩&#xff0c;关注博客园主页&#xff0c;不断学习&#xff01;不断进步&#xff01; 我的主页 csdn很少看私信&#xff0c;有事请b站私信 博客园主页-发文字笔记-常用 有限元鹰的主页 内容&#xff1a; ABAQUS数值模拟相关Python科学计算开源框架&#xff0c;编程…