js基础(1) | 青训营笔记

122 阅读9分钟

JavaScript

一、开端

1.计算机组成:硬件和软件,硬件很多种,软件分为系统软件和应用软件

2.数据储存:计算机内的所有的数据(图片、视频也是)最终都是以二进制的形式存储在硬盘中的

3.数据存贮单位

单位大小
位(bit)
字节(Byte)1B=8bit
千字节(KB)1024B
兆字节(MB)1024KB
吉字节(GB)1024MB
太字节 (TB)1024GB

4.js是什么

  • js是一种运行在客户端的脚本语言
  • 脚本语言:不需要编译,运行过程中由js解释器(js引擎)逐行来进行解释并执行
  • 现在也可以基于node.js技术进行服务器端编程

5.js三种书写位置

行内式, 特殊情况下再用

内嵌式

引进外部js文件

6.js的特点

解释型语言

JavaScript是一门解释型语言,所谓解释型值语言是指不需要被编译为机器码在执行,而是直接执行。由于少了编译这一步骤,所以解释型语言开发起来尤为轻松,但是解释型语言运行较慢也是它的劣势。不过解释型语言中使用了JIT技术,使得运行速度得以改善。

动态语言

JavaScript是一门动态语言,所谓的动态语言可以暂时理解为在语言中的一切内容都是不确定的。比如一个变量,这一时刻是个整型,下一时刻可能会变成字符串了。当然这个问题我们以后再谈。不过在补充一句动态语言相比静态语言性能上要差一些,不过由于JavaScript中应用的JIT技术,所以JavaScript可能是运行速度最快的动态语言了。

类似于 C 和 Java 的语法结构

JavaScript的语法结构与C和Java很像,向for、if、while等语句和Java的基本上是一模一样的。所以有过C和Java基础的同学学习起来会轻松很多。不过JavaScript和与Java的关系也仅仅是看起来像而已。

基于原型的面向对象

JavaScript是一门面向对象的语言。啥是对象?下次聊。

Java也是一门面向对象的语言,但是与Java不同JavaScript是基于原型的面向对象。啥是原型?下次聊。

严格区分大小写

JavaScript是严格区分大小写的,也就是abc和Abc会被解析器认为是两个不同的东西。

1. JS的输出
  1. 页面输出 document.write('Hello,Worle!'); 将内容直接写道HTML文档中,也就是说是可以加标签的
  2. 控制台输出
<script>
    console.log("输出一条日志");//最常用 //白色
    console.info("输出一条信息");       //白色
    console.warn("输出一条警告");       //黄色
    console.error("输出一条错误");      //红色
</script>
  1. 弹出窗口输出 alert("")

二、JS的基本语法

1.标识符

所谓标识符,就是指给变量、函数、属性或函数的参数起名字。

标识符可以是按照下列格式规则组合起来的一或多个字符:

  • 第一个字符必须是一个字母、下划线( _ )或一个美元符号( $ )。

  • 其它字符可以是字母、下划线、美元符号或数字。

  • 按照惯例,ECMAScript 标识符采用驼峰命名法。

    • 驼峰命名法:首个单词的首字母小写,其他的单词的首字母大写
  • 标识符不能是关键字和保留字符。

2.变量

变量分为字面量和变量

字面量是一些固定的值,变量用var去声明

2.1 类型分类

JavaScript中一共有5种基本数据类型:

  • 字符串型(String)
  • 数值型(Number)
  • 布尔型(Boolean)
  • undefined型(Undefined)
  • null型(Null)

这5种之外的类型都称为Object(比如NULL),所以总的来看JavaScript中共有六种数据类型。

2.2 typeof运算符

使用typeof操作符可以用来检查一个变量的数据类型。

用法:

<script>
console.log(typeof 123);
console.log(typeof "Hello,World!");
console.log(typeof true);
console.log(typeof undefined);
console.log(typeof null);
</script>
2.3 String

String用于表示一个字符序列,即字符串。字符串需要使用 单引号双引号 括起来。

转义字符:

2.4 Number
  • Number 类型用来表示整数和浮点数,最常用的功能就是用来表示10进制的整数和浮点数。

  • Number表示的数字大小是有限的,如果超过了这个范围,则会返回 ±Infinity(对,就是返回这个单词)。

    • 最大值:+1.7976931348623157e+308
    • 最小值:-1.7976931348623157e+308
    • 0以上的最小值:5e-324
  • 特殊的数字:

    • Infinity:正无穷
    • -Infinity:负无穷
    • NaN:非法数字(Not A Number)
  • 其它的进制:

    • 二进制:0b 开头表示二进制,但是,并不是所有的浏览器都支持
    • 八进制:0 开头表示八进制
    • 十六进制:0x 开头表示十六进制
2.5 Boolean
  • 布尔型也被称为逻辑值类型或者真假值类型。
  • 布尔型只能够取真(true)和假(false)两种数值。除此以外, 其它的值都不被支持。
2.6 Undefined
  • Undefined 类型只有一个值,即特殊的 undefined。
  • 在使用 var 声明变量但未对其加以初始化时,这个变量的值就是 undefined。
  • undefined 和 is not defined不一样,undefined已经分配了内存了,只是没有初始化,而is not defined是完全没有声明变量而导致的控制台报错。
2.7 Null
  • Null 类型是第二个只有一个值的数据类型,这个特殊的值是 null。
  • undefined值实际上是由null值衍生出来的,所以如果比较undefined和null是否相等,会返回true。
3.强制类型转换
3.1 转换为String类型

将其它数值转换为字符串有三种方式:toString()、String()、 拼串。

  • 方式一:调用被转换数据类型的toString()方法,该方法不会影响到原变量,它会将转换的结果返回,但是注意:null和undefined这两个值没有toString()方法,如果调用它们的方法,会报错。

    var a = 123;
    a = a.toString();
    console.log(a);
    console.log(typeof a);
    
  • 方式二:调用String()函数,并将被转换的数据作为参数传递给函数,使用String()函数做强制类型转换时,对于Number和Boolean实际上就是调用的toString()方法,但是对于null和undefined,就不会调用toString()方法,它会将 null 直接转换为 “null”,将 undefined 直接转换为 “undefined”。

    var a = 123;
    a = String(a);
    console.log(a);
    console.log(typeof a);
    ​
    var b = undefined;
    b = String(b);
    console.log(b);
    console.log(typeof b);
    ​
    var c = null;
    c = String(c);
    console.log(c);
    console.log(typeof c);
    
  • 为任意的数据类型 + ""

    var a = 123;
    a = a + "";
    console.log(a);
    console.log(typeof a);
    
3.2 转换为Number类型

有三个函数可以把非数值转换为数值:Number()、parseInt() 和parseFloat()。Number()可以用来转换任意类型的数据,而后两者只能用于转换字符串。parseInt()只会将字符串转换为整数,而parseFloat()可以将字符串转换为浮点数。

说实话直接用Number() 就行

3.3 转换为Boolean类型

将其它的数据类型转换为Boolean,只能使用Boolean()函数。

  • 使用Boolean()函数

    • 数字 —> 布尔

      • 除了0和NaN,其余的都是true
    • 字符串 —> 布尔

      • 除了空串,其余的都是true
    • null和undefined都会转换为false

    • 对象也会转换为true

4.运算符

运算符有算数运算符、关系运算符、赋值运算符、逻辑运算符、比较运算符、条件运算符、逗号运算符。

大部分与C语言相同。

不同的:

比较运算符:

使用 == 来做相等运算 当使用==来比较两个值时,如果值的类型不同,则会自动进行类型转换,将其转换为相同的类型,然后在比较 使用 != 来做不相等运算 不相等用来判断两个值是否不相等,如果不相等返回true,否则返回false,不相等也会对变量进行自动的类型转换,如果转换后相等它也会返回false 使用 === 来做全等运算 用来判断两个值是否全等,它和相等类似,不同的是它不会做自动的类型转换,如果两个值的类型不同,直接返回false 使用 !== 来做不全等运算 用来判断两个值是否不全等,它和不等类似,不同的是它不会做自动的类型转换,如果两个值的类型不同,直接返回true

条件运算符

JavaScript 还包含了基于某些条件对变量进行赋值的条件运算符。

语法:variablename=(condition)?value1:value2;

举例:result=(age<18)?"年龄太小":"年龄合适";

执行流程:如果condition为true,则执行语句1,并返回执行结果,如果为false,则执行语句2,并返回执行结果。

逗号运算符

使用逗号可以在一条语句中执行多次操作。

比如:var num1=1, num2=2, num3=3;

使用逗号运算符分隔的语句会从左到右顺 序依次执行。

运算符优先级

运算符优先级由上到下依次减小,对于同级运算符,采用从左向右依次执行的方法。

5.对象基础
5.1 概述

Object类型,我们也称为一个对象,是JavaScript中的引用数据类型。它是一种复合值,它将很多值聚合到一起,可以通过名字访问这些值。对象也可以看做是属性的无序集合,每个属性都是一个名/值对。对象除了可以创建自有属性,还可以通过从一个名为原型的对象那里继承属性。除了字符串、数字、true、false、null和undefined之外,JavaScript中的值都是对象。

5.2 创建

创建对象有两种方式

var person = new Object();
person.name = "孙悟空";
person.age = 18;
console.log(person);

var person = {
    name: "孙悟空",
    age: 18
};
console.log(person);
5.3访问

对象.属性名 和 对象[‘属性名’]

5.4 删除属性

delete 对象.属性名

5.5 遍历对象

枚举遍历对象中的属性,可以使用for … in语句循环,对象中有几个属性,循环体就会执行几次

for (var 变量 in 对象) {
​
}
5.6数据类型梳理

基本数据类型

JavaScript中的变量可能包含两种不同数据类型的值:基本数据类型和引用数据类型。

JavaScript中一共有5种基本数据类型:String、Number、 Boolean、Undefined、Null。

基本数据类型的值是无法修改的,是不可变的。

基本数据类型的比较是值的比较,也就是只要两个变量的值相等,我们就认为这两个变量相等。

引用数据类型

当一个变量是一个对象时,实际上变量中保存的并不是对象本身,而是对象的引用。

当从一个变量向另一个变量复制引用类型的值时,会将对象的引用复制到变量中,并不是创建一个新的对象。

这时,两个变量指向的是同一个对象。因此,改变其中一个变量会影响另一个。

more:JavaScript在运行时数据是保存到栈内存和堆内存当中的。

简单来说栈内存用来保存变量和基本类型,堆内存是用来保存对象。

6.函数
6.1 概述

函数是由一连串的子程序(语句的集合)所组成的,可以被外部程序调用,向函数传递参数之后,函数可以返回一定的值。