JavaScript基本知识点——带你逐步解开JS的神秘面纱

在我们前面的文章中已经深入学了HTML和CSS,在网页设计中我们已经有能力完成一个美观的网页框架

但仅仅是网页框架不足以展现出网页的魅力,JS由此而生!

JavaScript概述

JavaScript是一门弱类型脚本语言,其源代码在发往客户端运行之前不需要进行翻译,而是将文本格式的字符代码发送给浏览器由浏览器进行解释编译。

ECMAScript是一种由Ecma国际通过ECMA-262标准化的脚本程序设计语言,算是目前JS的一个标准。

目前我们所使用的JS版本一般是ES6,但网页的通用版本一般为ES5。

JavaScript书写位置

既然谈到JavaScript,首先谈及它的作用

  • JavaScript是为HTML而服务的,所以JavaScript的书写也同CSS一样可以在HTML代码中编写

我们来介绍JavaScript的两种书写方法:

  • 内部标签:

​ 在HTML的任意位置(注意不要超出HTML控制范围)都可以采用script成对标签来书写JS代码

  • 外部引入:

​ 在HTML的head部分,采用script成对标签来引入外部JS文件代码

我们下面给出示例代码:

<!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>我们的第一个JavaScript代码</title> <!-- JS和CSS一样分为内部标签和外部引入 --> <!-- 内部引入采用script成对标签 -->
<script>
// JS中的注释是//
// 这里alert的意思是输出,我们后面会有介绍
alert("HelloWorld!");
</script> <!-- 外部引入也是采用script成对标签,但里面需要写src=“JS文件地址” -->
<script src="js.js"></script> </head>
<body>
<!-- 我们的html中不需要书写东西也可以使用JS --> <!-- 注意,JS代码也可以写在body里面,只要不写在/html外都可以生效 -->
</body>
</html>

JavaScript浏览器控制调试

我们的JavaScript虽然在HTML中书写,但一般情况下我们无法在HTML文件中检查到错误

所以我们一般在HTML文件打开的网站中进行JavaScript的调试和错误修改以及提醒

下面我以图片形式展示JavaScript的浏览器控制调试顺序:

我们在控制台中进行JavaScript代码的调试,也可以在源代码中选择断点来进行错误检测

JavaScript须知

在介绍JavaScript的其他内容之前我需要先把一些基本内容告诉你们:

  • JavaScript的所有数据类型都由var和let定义

    • var 全局变量
    • let 局部变量
  • JavaScript的输出方法:
    • alert() 打开页面将会弹出的内容
    • console.log() 在控制台输出的内容
  • JavaScript严格检查模式(ES6专属):
    • 在之间的第一行加上"use strict"
    • 进入严格检查模式后,你的部分不规整代码将会被检测,但错误无法完全检测

JavaScript数据类型

JavaScript是一种面向对象的编程语言,所以在JavaScript与HTML和CSS不同,我们可以在JavaScript中定义数据变量来协助我们书写代码

下面我先为大家介绍JavaScript的基本数据类型(与Java相似但有所不同,下面我只为JS特有类型做出标注):

数字类型

数字类型包括有:

  • 1 整数
  • 1.1 小数
  • 1.123e3 科学计数法
  • NaN 非数字类型
  • Infinity 无穷

字符串

与Java一样采用“ ”来定义:

  • “HelloWorld”

布尔值

布尔值分为两种:

  • true
  • false

逻辑运算符

逻辑运算符分为三种:

  • &&
  • ||

比较符

JavaScript的比较符相对特殊:

  • = 表示赋值
  • == 表示等于(类型不一样,但数值一样就可以判定为true)
  • === 表示绝对等于(只有当类型和数值都一样时才可以判定为false)

在这里我想特别强调一下NaN和浮点数问题:

  • NaN无法通过===进行比较

    • NaN === NaN 的运算结果为false
    • isNaN(NaN)才可以得出NaN的判定结果
  • 浮点数计算无法通过===进行比较
    • 1/3 === (1-2/3) 的运算结果为false
    • 我们通常通过 Math.abs(1/3 - (1-2/3) < 0.000001)来判断浮点数是否相同

特殊类型

JavaScript存在两种特殊类型:

  • null 空
  • underfined 未定义

数组

JavaScript的数组可以存在有不同基本类型的数据

定义格式:

  • var arr = [...,...,...];

定义例子:

  • var arr = [1,2,3,"Hello",true];

输出方法:

  • arr[0]

注意:当打印越界时,不会报错,但打印结果为underfined

对象

JavaScript的对象类似于键值对的存在方式

定义格式:

  • var person = {

    ​ name:“侯佳磊”,

    ​ age:18,

    ​ tags:["Java","HTML","CSS"]

    }

对象之间的数据用逗号隔开,最后一个不用

调用方法:

  • person.name

JavaScript字符串详解

我们首先对字符串进行详细介绍:

  1. 字符串的定义通常采用“”或者''都可以

  2. 注意转义字符:

    格式 说明
    \ + 特殊意义字符 在控制台输出该字符
    \n 换行符
    \t 水平制表符
    \u + 四位数 Unicode字符
    \x + 两位数 Ascll字符
  3. 多行字符串:采用``来隔行书写字符串

  4. 模板字符串:我们可以采用${字符串}来直接带入字符串

let name = "侯佳磊";
let age = 18;
let msg = `你好啊,${name}`;
  1. 字符串具有不可变性
  2. 字符串属性和方法:
方法名 说明
str.length 字符串长度
str.toUpperCase() 字符串字母变大写
str.toLowerCase() 字符串字母变小写
str.indexOf('~') 字符串查找“~”的下标
str.subString(n) 返回一个从n到最后的字符串
str.subString(n,m) 返回一个字符串(n,m]的字符串

JavaScript数组详解

JavaScript中数组可以结合各种类型的数值

  1. 定义格式:

    • var arr = [1,2,3,4];
  2. 数组长度:
    • arr.length
    • 注意:可以为数组的length赋值
    • 当length赋值变大,后面的值默认为empty
    • 当length赋值变小,前面的值将会被删除
  3. 可以通过下标进行取值和赋值
  4. indexOf()通过元素来获得下标索引:
    • arr.indexOf()
    • 注意:数字1和字符串“1”不同
  5. slice()截取一部分,返回一个数组
    • arr.slice(1)截取1之后的所有元素组成数组
  6. push(),pop()方法
    • arr.push(值) 把值在尾部输入
    • arr.pop( ) 把最后一个值从尾部弹出
  7. unshift(),shift()方法
    • arr.unshift(值) 把值在头部输入
    • arr.shift( ) 把第一个值从头部弹出
  8. sort()排序方法
  9. reverse()反转方法
  10. concat()拼接方法
    • arr.concat( )不会改变原数组,会返回一个新数组
    • 可以直接用[],也可以写入一个数组
  11. join(“”)用连接各个元素并返回一个字符串
  12. 多维数组:
    • 定义格式:[[],[],[]]
    • 例子:var nums = [[1,2],[2,3],[3,4]];

JavaScript对象详解

JavaScript的相关知识点:

  1. 定义格式:
var 对象名 = {
属性名:属性值,
属性名:属性值,
属性名:属性值
}
  1. 对象的键是字符串,值是任意对象
  2. 对象赋值:
    • 对象.属性 = 属性值
  3. 当使用一个不存在的属性时,不会报错,但会报出underfined
  4. 动态删除属性:
    • delete 对象.属性
  5. 动态增加属性:
    • 对象.属性 = 属性值
  6. 判断属性值是否在对象中:
    • “键名” in 对象
    • 例如:"name" in person
  7. 判断属性是否是对象自身拥有的:
    • 对象.hasOwnProperty(“键名”)

流程控制

JavaScript的流程控制和Java相差不大

  1. if判断与Java完全相同
  2. while循环与Java完全相同
  3. for原版循环与Java完全相同

下面我们介绍三种新的for循环:

  1. forEach()循环
var age = [12,3,12,3,12,3,123,23];

//主要采用函数,注意:最外围是(),里面包括函数
age.forEach(function(value){
console.log(value)
})
  1. forin循环
//注意:这里的num是下标值
for(var num in age){
console.log(arr[num])
}
  1. forof循环
//注意:这里的num是元素值
for(var num of age){
console.log(num)
}

Map和Set详解(ES6新增特性)

Map详解:

  • 定义格式:

    • var map = new Map([[ , ],[ , ],[ , ]]);
    • 注意:这里是有Map的(),然后里面有一个[]表示map,然后再有多个[]表示多个键值对
    • 例如: var map = new Map([["侯佳磊",18],["胡桃",18]]);
  • 获得Map值:
    • map.get(键名); 通过键获得值
  • 新添Map键值对:
    • map.set( , );
  • 删除Map键值对:
    • map.delete( , );

Set详解:

  • 定义格式:

    • var set = new Set([ , , ,]);
    • 注意:这里同样有Set的(),然后里面有一个[]表示set
    • 例如:var set = new Set([1,2,3]);
  • 判断是否包含某个值:
    • set.has(value);
  • 新添set值:
    • set.add(value);
  • 删除set值:
    • set.delete(value);

Map和Set均通过for方法实现遍历:

        var map = new Map([["侯佳磊",18],["胡桃",18]]);

        for(let value of map){
console.log(value[0]);
console.log(value[1]);
console.log(value)
} var set = new Set([1,2,3,3,4]); for(let value of set){
console.log(value)
}

结束语

好的,关于JavaScript的基本知识点我们就讲到这里,下节课我们将会学习JavaScript函数和常用对象

JavaScript基本知识点——带你逐步解开JS的神秘面纱的更多相关文章

  1. 解开Future的神秘面纱之任务执行

    此文承接之前的博文 解开Future的神秘面纱之取消任务 补充一些任务执行的一些细节,并从全局介绍程序的运行情况. 任务提交到执行的流程 前文我们已经了解到一些Future的实现细节,这里我们来梳理一 ...

  2. 解开HTTPS的神秘面纱

    在说HTTP前,一定要先介绍一下HTTP,这家伙应该不用过多说明了,大家每天都在用,每一次HTTP请求,都是一次TCP连接.遗憾的是,请求的内容在TCP报文中是明文传输的,任何人截取到请求都可以读取其 ...

  3. JavaScript学习总结【4】、JS深入

    1.JS流程控制语句 (1).if 判断 if 语句是基于条件成立时才执行相应的代码. if...else 语句是在指定的条件成立时执行if后的代码,在条件不成立时执行else后的代码. if...e ...

  4. JavaScript进阶知识点——函数和对象详解

    JavaScript进阶知识点--函数和对象详解 我们在上期内容中学习了JavaScript的基本知识点,今天让我们更加深入地了解JavaScript JavaScript函数 JavaScript函 ...

  5. javascript马赛克遮罩图片切换效果:XMosaic.js(转)

    新鲜出炉的javascript图片切换特效,实现的是马赛克遮罩切换.在flash里,好实现遮罩动画很简单,不过JS实现起来就有些困难了. XMosaic.js,与XScroll.js和XScroll2 ...

  6. Javascript重要知识点梳理

    Javascript重要知识点梳理 一.Javascript流程控制 js中常用的数据类型 var关键字的使用 if – else if – else switch while for 二.Javas ...

  7. 翻译连载 | 第 10 章:异步的函数式(上)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇

    原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...

  8. 翻译连载 | 第 10 章:异步的函数式(下)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇

    原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...

  9. JavaScript是如何工作的: CSS 和 JS 动画底层原理及如何优化它们的性能

    摘要: 理解浏览器渲染. 原文:JavaScript是如何工作的: CSS 和 JS 动画底层原理及如何优化它们的性能 作者:前端小智 Fundebug经授权转载,版权归原作者所有. 这是专门探索 J ...

随机推荐

  1. vue2响应式原理与vue3响应式原理对比

    VUE2.0 核心 对象:通过Object.defineProtytype()对对象的已有属性值的读取和修改进行劫持 数组:通过重写数组更新数组一系列更新元素的方法来实现元素的修改的劫持 Object ...

  2. 新零售SaaS架构:组织管理的底层逻辑与架构设计

    想要深入理解零售企业的组织架构,是非常困难的一件事.因为大部分人都没有实际经营过一家零售企业,更没有参与设计过零售企业的组织架构. 调研商家时,我们只能了解商家组织架构的现状,我们也很难和企业高层直接 ...

  3. SpringMVC的文件上传下载,异常处理,拦截器的小总结

    文件的上传和下载 我们通常在访问网页时会使用到文件的上传与下载的功能,那么他是如何实现的呢? 1 下载: ResponseEntity :用于控制器方法的返回值类型,该控制器方法的返回值就是响应到浏览 ...

  4. for循环+数字类型补充

    一.for循环 1.循环取值 1.1列表类型:  定义l=['a','b','c'],要提取列表中的值  如果采用while循环的话:   print(len(l))   i=0   while i& ...

  5. 从0到1使用kubebuiler开发operator

    介绍 假设一个Nginx的QPS(服务器一秒内处理的请求数)上限为500,如果外部访问的QPS达到了600,为了保证服务质量,必须扩容一个Nginx来分摊请求. 在Kubernetes环境中,如果外部 ...

  6. 455. Assign Cookies - LeetCode

    Question 455. Assign Cookies Solution 题目大意:数组g的大小表示有几个小孩,每个元素表示小孩的食量,数组s的大小表示有多少个饼干,每个元素的大小表示每个饼干的大小 ...

  7. 122_Power Pivot&Power BI不连续日期的日环比

    博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 这两天有朋友在交流,dax中使用时间智能函数写日环比,一个 dateadd 就可以了.但是有些业务不是每天都连续 ...

  8. 使用instanceof操作符判断对象类型及方法的重载

    学习内容: 一.使用instanceof操作符判断对象类型 1.instanceof操作符可以判断一个实例对象是否属于一个类. 语法:对象名 instanceof 类名 2.使用instanceof表 ...

  9. 基于C++11的数据库连接池实现

    0.注意 该篇文章为了让大家尽快看到效果,代码放置比较靠前,看代码前务必看下第4部分的基础知识. 1.数据库连接池 1.1 是什么? 数据库连接池负责分配.管理和释放数据库连接,属于池化机制的一种,类 ...

  10. Scalable Multi-Party Private Set-Intersection-解读

    本文记录阅读该paper的笔记. 摘要 本文给出两种MPSI协议,采用的是星型拓扑结构,即有一个leader,需要和其他参与者交互.优点是并非所有各方都必须同时在线: (1)能抗半诚实攻击 通信复杂度 ...