2、JavaScript快速入门

news2024/11/16 11:48:30

2.1 引入JavaScript

  1. 内部标签

    <!-- 在script标签内写JavaScript(简称js)代码,代码块可以放在head中,也可以放在body中-->
    <script>
            // alert:弹窗
            alert('Hello,world!');  //注意以分号结尾
    </script>
    
  2. 外部引入

    hello.js

    alert('Hello,world!'); 
    

    hello.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <!-- 外部引入 -->
        <!-- 注意:script标签必须成对出现 -->
        <script src="js/qj.js" type="text/javascript"></script>
    </head>
    <body>
        <h1>我是标题</h1>
    </body>
    </html>
    

2.2 基本语法入门

<!--JavaScript中也要严格区分大小写-->
 <script>
     //定义变量
     var score="88";
     //弹窗
     alert(score);
     //在浏览器的控制台打印变量 相当于sout
     console.log(score);
 </script>

2.3 变量和数据类型

变量 JavaScript只有一种变量

//定义变量 变量类型 变量名 = 变量值;
var name = "jiangjiang";

number JavaScript中不区分整数和小数

1         //整数1
1.1       //浮点数1.1
1.123e3   //科学计数法
-99       //复数
NaN       //not a number
Infinity  //无限大

字符串

  1. 正常的字符串我们使用单引号或者双引号包裹 —— ‘a’ “abc”

  2. 注意转义字符

    \'      字符串
    \n      换行
    \t      tab
    \u4e2d  Unicode字符
    \x41    Ascll字符
    
  3. 多行字符串编写

    //tab键上面的 `` 飘
    var s = `hello
             world
             你好呀`;
    
  4. 模板字符串

    let name = "jinagjiang";
    let age = 18;
    let  s2 = `你好呀,${age}岁的${name}`;
    console.log(s2);
    
  5. 字符串长度

    var s3 = "student";
        console.log(s3.length);
    > 7
    
  6. 字符串的可变性 不可变

    //通过字符串中的字符,获取其对应的下标
    console.log(s3.indexOf('s'));
    //通过字符串的下标,获取其对应的字符
    console.log(s3[0]);
    > s
    s3[0]= 1;
    > 1
    console.log(s3);
    > student
    
  7. 大小写转换

    //注意:这里是方法,不是属性了
        console.log(s3.toUpperCase());
        console.log(s3.toLowerCase());
    
  8. 字符串截取

    //截取字符串 
    //从下标0对应的字符截取到最后一个字符
    console.log(s3.substring(0));
    > student   
    //从下标0对应的字符截取到下标2对应的字符
    //[) 左闭右开 包含前面,不包含后面
    console.log(s3.substring(0,2));
    > st
    

布尔值

  • true false

逻辑运算

  • 与(&&) 或(||) 非(!)

比较运算符(重要)

符号含义注意
=赋值
==等于(类型不一样,值一样,也会判断为true)这是一个js的缺陷,坚持不要使用 == 比较
===绝对等于(类型一样,值一样,才会判断为true)NaN问题:
NaN与所有的值都不相等,包括自己本身
- NaN === NaN 结果为false
- isNaN(NaN) 结果为true
浮点数问题:
console.log((1/3) === (1-2/3)) 结果为false
尽量避免使用浮点数进行运算,存在精度问题

null 和 underfined

  • null 空

  • underfined 未定义

数组

Java中的数组必须是一系列相同类型的对象,JavaScript中数组可以包含任意的数据类型

//定义数组:为了代码的可读性,尽量使用 [] 这种形式
var arr = [1,2,3,'hello',null,true];
new Array(1,2,3,'hello',null,true);

数组下标越界,会报 underfined(未定义的)

  1. 数组长度

    console.log(arr.length);
    /**注意:
     * 假如给 arr.length 赋值,数组大小就会发生变化
     * 如果赋值过小,数组中的元素就会丢失
     */
    
  2. 常用方法 数组:存储数据(如何存,如何取,方法都可以自己实现)

    方法名用法
    a.indexof()通过元素获得下标索引
    a.slice()类似于字符串的substring(),截取数组的一部分,并返回一个新的数组
    console.log(a.slice(0)); //从下标0对应的字符截取到最后一个字符
    a.push()向原数组的尾部添加元素
    a.pop()弹出原数组尾部的一个元素
    a.unshift()向原数组的头部添加元素
    a.shift()弹出原数组头部的一个元素
    a.sort()给数组排序
    a.reverse()将数组元素反转
    a.concat()将元素与原数组拼接,并返回一个新的数组(并没有修改原数组)
    a.join(‘-’)修改数组元素之间的连接符
    var a = [“A”,“B”,“C”] →→→ “A-B-C”
  3. 多维数组
    在这里插入图片描述

对象

对象是大括号 {},数组是中括号[]

若干个键值对,JavaScript中的所有的键都是字符串,值是任意对象!

var 对象名 = {
    属性名: 属性值,
    属性名: 属性值,
    属性名: 属性值
}
/**Js中对象 {...}表示一个对象,
  * 键值对描述属性 xxx:xxx,
  * 多个属性之间使用逗号隔开,最后一个不需要
  */
//定义了一个person对象,它有四个属性
var person = {
      name:"jiangjiang",
      age:18,
      lesson:"java"
    }
  1. 对象赋值和取值

    person.name = "jiang" 
    > 'jiang'
    person.name
    > 'jiang'
    person.age     
    > 18
    
  2. 使用一个不存在的对象属性,不会报错 undefined

    person.sex
    > undefined
    
  3. 动态的删减添加属性

    • 删减 —— 通过 delete 删除对象的属性

      delete person.name
      > true
      person
      > {age: 18, lesson: 'java'}
      
    • 添加 —— 直接给新的属性添加值即可

      person.name = "jiangjiang"
      > 'jiangjiang'
      person
      > {age: 18, lesson: 'java', name: 'jiangjiang'}
      
  4. 判断属性值是否在这个对象中 xxx in xxx

    'name' in person
    > true
    'sex' in person
    > false
    //继承父类的
    'toString' in person
    > true
    //判断一个属性是否是这个对象自身所拥有的 hasOwnProperty
    person.hasOwnProperty('toString')
    > false
    

2.4 严格检查模式

<script>
      'use strict';
      /** 'use strict'; 严格检查模式
       * 前提:IDEA需要设置支持ES6语法
       * 预防JavaScript的随意性导致产生的一些问题
       * 必须写在JavaScript的第一行才能起作用
      */
      //全局变量 若不在严格检查模式下,可以这么定义
      i = 1;
      //在严格检查模式下,局部变量建议都使用 let 去定义
      let j = 2;
</script>

2.5 流程控制

  1. if 判断

    if (score>60 && score<70){
       alert("60~70"); 
    }else if (score>70 && score<80){
       alert("70~80")
    }else if (score>80 && score<90){
       alert("80~90")
    }else {
       alert("other")
    }
    
  2. while 循环

    while(score>85){
        score = score-1;
        console.log(score)
    }
    
    do{
        score = score-1;
        console.log(score)
    }while(score>85)
    

    for 循环

    for (let score = 88; score < 100; score++) {
       console.log(score);
    }
    

    forEach循环 ES5.1

    var num = [5,1,2,3,4];
    num.forEach(function (value){
        console.log(value);
    })
    

    for…in 循环

    /** Java中
      * for(Type str:el){}
      */
    var num = [5,1,2,3,4];
    /** JavaScript中
      *  for(var index in object){}
      */
    for(var n in num){
       console.log(num[n]);
    }
    

2.6 Map和Set

ES6 的新特性~

Map:

//学生的名字,学生的成绩
//var names = ["tom","jack","jiang"];
//var scores = [100,90,80];
//ES6 Map集合(将以上两个数组变成集合)
    var map = new Map([["tom",100],["jack",90],["jiang",80]]);
    var s = map.get("tom"); //通过key获得value
    console.log(s);
> 100
//新增或修改元素
    map.set("karry",921);
    console.log(map);
> Map(4) {'tom' => 100, 'jack' => 90, 'jiang' => 80, 'karry' => 921}
//删除元素
    map.delete("jiang");
    console.log(map);
> Map(4) {'tom' => 100, 'jack' => 90, 'karry' => 921}

Set:无序不重复的集合

var set = new Set([3,1,1,1,1]); 
console.log(set); //Set可以去重:Set(2) {3, 1}
set.add(2);       //添加:Set(3) {3, 1, 2}
set.delete(1);    //删除:Set(2) {3,2}
console.log(set.has(3));  //是否包含某个元素:true

2.7 iterator

ES6 的新特性~

  1. 遍历数组

    var arr = [3,4,5];
    //通过 for..in实现:打印数组下标
        for (let x in arr){
           console.log(x);
        } 
    //通过 for..of实现:打印数组中对应的值
        for (let x of arr){
           console.log(x);
        } 
    
  2. 遍历Map

    var map = new Map([["tom",100],["jack",90],["jiang",80]]);
    for (let x of map){
        console.log(x);
    }      
    
  3. 遍历Set

    var set = new Set([3,1,1,1,1]);
    for (let x of set){
        console.log(x);
    }
    

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

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

相关文章

分享120个ASP源码,总有一款适合您

ASP源码 分享120个ASP源码&#xff0c;总有一款适合您 链接&#xff1a;https://pan.baidu.com/s/1WwTsUTLS_qLvP-TC1w-1vQ?pwdvxpk 提取码&#xff1a;vxpk 下面是文件的名字&#xff0c;我放了一些图片&#xff0c;文章里不是所有的图主要是放不下...&#xff0c;大家下载…

OB0207 obsidian 自动获取url链接:auto-link-title插件使用

序号解读&#xff1a; 01——软件基础使用、基础语法 02——插件使用 03——综合实战 0 写在前面 Ob社区插件汇总&#xff1a;Airtable - OB社区插件汇总 - Johnny整理 - 每周更新 - B站 Johnny学Explore the "OB社区插件汇总 - Johnny整理 - 每周更新 - B站 Johnny学&qu…

过去一年渲染了3亿帧,助力了63.81亿票房、1150亿播放量丨瑞云渲染年度大事记

2022年&#xff0c;注定是充满未知和挑战的一年。抗疫三年&#xff0c;终于在2022年底迎来放开&#xff0c;我们怀着忐忑的心情告别了核酸、行程码和封控&#xff0c;成为了自己健康的第一负责人。这段时间大家应该都忙着和病毒做斗争吧&#xff0c;瑞云各个岗位的小伙伴们也都…

6.7、万维网(如HTTP超文本传输协议)

1、基本介绍 万维网 WWW (World Wide Web&#xff09;并非某种特殊的计算机网络\color{red}并非某种特殊的计算机网络并非某种特殊的计算机网络。 它是一个大规模的、联机式的信息储藏所&#xff0c;是运行在因特网上的一个分布式应用。 万维网利用网页之间的超链接\color{r…

Web进阶:Day5 移动适配、rem、less

Web进阶&#xff1a;Day5 Date: January 10, 2023 Summary: 移动适配、rem、less 移动适配 移动适配指网页元素的宽高都要随着设备宽度等比缩放 rem &#xff1a; 目前多数企业在用的解决方案 vw / vh&#xff1a;未来的解决方案 rem 目标&#xff1a;能够使用rem单位设置网…

2022年跨境物流指数研究报告

第一章 行业概况 指提供跨境物流服务的行业。跨境物流是指在电子商务环境下&#xff0c;依靠互联网、大数据、信息化与计算机等先进技术&#xff0c;物品从跨境电商企业流向跨境消费者的跨越不同国家或地区的物流活动。 图 物流运输行业产业链结构图 资料来源&#xff1a;资产…

Tapdata Cloud 场景通关系列:集成阿里云计算巢,实现一键云上部署真正开箱即用

【前言】作为中国的 “Fivetran/Airbyte”, Tapdata Cloud 自去年发布云版公测以来&#xff0c;吸引了近万名用户的注册使用。应社区用户上生产系统的要求&#xff0c;Tapdata Cloud 3.0 将正式推出商业版服务&#xff0c;提供对生产系统的 SLA 支撑。Tapdata 目前专注在实时数…

VS2010 安装NuGet NPIO 基础连接已经关闭:发送时发生错误

1.下载Nuget并安装 NuGet Package Manager - Visual Studio Marketplace 工具->扩展管理器可看见 2.安装NPOI 3. 如果遇见基础连接已经关闭:发送时发生错误 要把https://packages.nuget.org/改为https://www.nuget.org/api/v2/ VS2019要使用https://www.nuget.org/api/v…

OAuth2.0 详解

OAuth2.0介绍 OAuth&#xff08;Open Authorization&#xff09;是一个关于授权&#xff08;authorization&#xff09;的开放网络标准&#xff0c;允许用户授权第三方 应用访问他们存储在另外的服务提供者上的信息&#xff0c;而不需要将用户名和密码提供给第三方移动应用或分…

【日常系列】LeetCode《26·动态规划1》

数据规模->时间复杂度 <10^4 &#x1f62e;(n^2) <10^7:o(nlogn) <10^8:o(n) 10^8<:o(logn),o(1) lc 509【剑指 10-1】&#xff1a;斐波那契数列问题 - 动态规划入门 https://leetcode.cn/problems/fibonacci-number/ 提示&#xff1a; 0 < n < 30 #方案…

WebSocket概念及实现简易聊天室

WebSocket实现简易聊天室 1 WebSocket介绍 网络通信协议是HTML5开始提供的一个单个TCP连接上进行全双工通信协议 1.1 诞生原因&#xff08;http无状态、无连接&#xff09; ①HTTP协议&#xff1a; 由于HTTP协议是一种无状态、无连接、单向的应用层协议&#xff0c;通信请求只…

Java反射机制是什么?

Java 反射机制是 Java 语言的一个重要特性。在学习 Java 反射机制前&#xff0c;大家应该先了解两个概念&#xff0c;编译期和运行期。 编译期是指把源码交给编译器编译成计算机可以执行的文件的过程。在 Java 中也就是把 Java 代码编成 class 文件的过程。编译期只是做了一些…

Qt Creator添加自定义向导

文章目录一、前言二、前置说明三、wizard.json解析3.1、宏观结构3.2、微观解释3.2.1、向导信息3.2.2、定义变量3.2.3、页面定义3.2.4、文件生成四、实战一、前言 在Qt Creator中&#xff0c;当我们选择新建时&#xff0c;Qt自带了很多选项&#xff1b; 如果我们在开发过程中&a…

软件测试——使用mujava测试过程中

文章目录下载对应安装包步骤二、修改代码第二部分&#xff0c;修改对应测试文件下载对应安装包 分别下载junit.jar、mujava.jar和openjava.jar三个包&#xff0c;并设定对应系统路径。三个安装包的下载路径以mujava.jar为例子 设置系统环境变量&#xff0c;计算机》属性》高级…

golang实现一个linux命令ls命令(命令行工具构建)

希望2023可以听到这些话&#xff1a; 恭喜你得到了这份工作恭喜你的建议被采用了恭喜你被录取了恭喜你的考试顺利通过了恭喜你上岸了恭喜你升职了恭喜你加薪了恭喜你体检结果一切正常在这篇文章下面许个愿吧&#xff01; ls 命令 要实现ls&#xff0c;首先先我们复习一下ls命令…

FPGA知识汇集-ASIC向FPGA的移植

ASIC原型验证是整个验证环节中非常重要的步骤之一&#xff0c;也是将ASIC的代码移植到FPGA平台上最重要的原因&#xff0c;本文章的意义在于&#xff1a; 对于系统构架师&#xff0c;将帮助他们在选择商用模拟器还是自行设计方案之间做出更好的选择&#xff1b; 对于逻辑工程师…

一文读懂Go Http Server原理

hello大家好呀&#xff0c;我是小楼&#xff0c;这是系列文《Go底层原理剖析》的第二篇&#xff0c;依旧是分析 Http 模块&#xff0c;话不多说&#xff0c;开始。 从一个 Demo 入手 俗话说万事开头难&#xff0c;但用 Go 实现一个 Http Server 真不难&#xff0c;简单到什么程…

2、Eclipse安装与使用

目录 一、简介 二、下载 三、Eclipse安装 &#xff08;1&#xff09;找到Eclipse安装包&#xff0c;右键【以管理员身份运行】 2.因为是写Java程序&#xff0c;所以安装第一个喽 3.安装位置设置&#xff08;不建议C盘安装哦&#xff09;&#xff0c;点击【INSTALL】 3.点…

day02 数组 | 977、有序数组的平方 209、长度最小的子数组 59、螺旋矩阵II

1、题目 977、有序数组的平方 给你一个按 非递减顺序 排序的整数数组 nums&#xff0c;返回 每个数字的平方 组成的新数组&#xff0c;要求也按 非递减顺序 排序。 示例 1&#xff1a; 输入&#xff1a;nums [-4,-1,0,3,10] 输出&#xff1a;[0,1,9,16,100] 解释&#xff1…

github Page博客速度优化+Cloudflare_https两端配置+解决重定向次数过多问题

网站加速调优 自从加了CDN之后我的博客偶尔会报错”重定向次数过多“ 症状&#xff1a; XXX.XXX.XXX 将您重定向的次数过多。 尝试清除 Cookie. ERR_TOO_MANY_REDIRECTS 可能原因 参考阿里云cdn解决方案https://help.aliyun.com/document_detail/451418.html但是cloudflar…