Javascript基础

一.编程语言

1.计算机语言的种类非常的多,总的来说可以分成机器语言,汇编语言和高级语言三大类。
2.计算机最终所执行的都是 机器语言,它是由“0”和“1”组成的二进制数,二进制是计算机语言的基础。
3.编程语言:用"语言”来控制计算机,让计算机为我们做事情。
4.如今通用的编程语言有两种形式:汇编语言和高级语言。
(1)汇编语言和机器语言实质是相同的,都是直接对硬件操作。
(2)高级语言:C++、Java、C#、Python、PHP、avaScript、Go语言、Objective-C、Swif。
5.高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,为此,我们需要一个翻译器。
6.翻译器可以将我们所编写的源代码转换为机器语言
7.标记语言:html,不用于向计算机发出指令,常用于格式化和链接,是被动的。
8.编程语言是主动的有很强的逻辑性。

二.计算机基础

1.计算机的组成

硬件:输入设备、输出设备、CPU(负责处理数据与运算)、硬盘(永久存储数据)、内存(暂时存储数据)
软件:系统软件(Windows、Linux)、应用软件(浏览器、qq、VScode)

2.数据存储

(1)所有数据,包括文件、图片等最终都是以二进制数据(0 和 1)的形式存放在硬盘中的。
(2)所有程序,包括操作系统,本质都是各种数据,也以二进制数据的形式存放在硬盘中。平时我们所说的安装软件,其实就是把程序文件 复制到硬盘中。
(3)硬盘、内存都是保存的二进制数据。

3.数据存储单位

位(bit): 1bit 可以保存一个 0 或者 1 (最小的存储单位)
字节(Byte):1B = 8b
千字节(KB):1KB = 1024B
兆字节(MB):1MB = 1024KB
吉字节(GB): 1GB = 1024MB
太字节(TB): 1TB = 1024GB

4.程序运行

硬盘—>内存–>CPU
计算机运行软件过程:(1)打开某个程序时,先从硬盘中把程序的代码加载到内存中(2)CPU执行内存中的代码
注意:之所以要内存的一个重要原因,是因为 cpu运行太快了,如果只从硬盘中读数据,会浪费cpu性能。

三.JavaScript

1.是一种运行在客户端的脚本语言([Script]不需要编译,运行过程中由 js 解释器( js 引擎)逐行来进行解释并执行)
2.也可以基于 Node.js 技术进行服务器端编程
3.浏览器分成两部分:渲染引擎(用来解析HTML与CSS,俗称内核,比如 chrome 浏览器的 blink)和 JS 引擎(JS 解释器,读取网页中的JavaScript代码,chrome V8)
4.注意单双引号的使用:在HTML中我们推荐使用双引号, JS 中我们推荐使用单引号
5.JS 有3种书写位置,分别为行内、内嵌和外部。
6.变量:程序在内存中申请的一块用来存放数据的空间。(类似我们酒店的房间,一个房间就可以看做是一个变量)
7.数据类型转换

var num=1;
num.toString();  //num+""
parseInt("11"); // "11"-0
parseFloat("11.2");

8.解释型语言:边解释边执行
9.编译型语言:在代码执行之前进行编译,生成中间代码文件,再执行中间代码文件。

一.运算符

1.var result = 0.1 + 0.2; // 结果不是 0.3,而是:0.30000000000000004
所以:不要直接判断两个浮点数是否相等 !
2.++num 先自加,后返回值 num++ 先返回原值,后自加
3.=== 全等 会判断两边的值和数据类型是否完全相等
4.逻辑中断:当具有多个表达式时,谁具有决定性,返回谁

   console.log( 0 && 456 ); // 0
   console.log( 0 ||  456 ); //  456

二.函数

1.装了一段可被重复调用执行的代码块。
2.所有函数都内置了一个 arguments 对象,arguments 对象中存储了传递的所有实参(arguments实际上它是当前函数的一个内置对象)。

三.作用域

1.js在ES6之前,有两种作用域:全局作用域和局部作用域(函数作用域)
2.全局变量:只有在浏览器关闭时才会被销毁,因此比较占内存
局部变量:只在函数内部使用,当函数被调用完之后,就会被销毁,因此更节省内存空间

四.作用域链

(一级一级的向上去查找)采取就近原则的方式来查找变量最终的值。

五.预解析

1.JavaScript 解析器在运行 JavaScript 代码的时候分为两步:预解析和代码执行。
2.在当前作用域下, JS 代码执行之前,浏览器会默认把带有 var 和 function 声明的变量在内存中进行提前声明或者定义。

六.内置对象

JS 语言自带的一些对象,这些对象供开发者使用,帮助我们快速开发

1.Math对象

Math.random()  //获取范围在[0,1)内的随机值
Math.round()   //四舍五入版 就近取整   注意 -3.5   结果是  -3
Math.floor()
Math.ceil()
Math.abs()
//指定范围内的随机数
function getRandom(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min; 
  }

2.Date对象

Date 对象和 Math 对象不一样,Date是一个构造函数,所以使用时需要实例化后才能使用其中具体方法和属性。

  var now = new Date();
  var future = new Date('2019/5/1');
  //获取总毫秒数
  console.log(now.getTime())
  var now = + new Date();	
  getMonth() //0-11月
  getDay()  //周日0-周六6

3.Array对象

(1)instanceof 可以判断一个对象是否是某个构造函数的实例 console.log(arr instanceof Array); // true
(2)console.log(Array.isArray(arr));
(3)添加 push() unshift()
(4)删除 pop() shift()
(5)reverse()
(6)sort()默认升序
注意:sort方法需要传入参数来设置升序、降序排序;如果传入“function(a,b){ return a-b;}”,则为升序;如果传入“function(a,b){ return b- a;}”,则为降序
(7)转字符串
toString() //以,分隔
(8)concat() //连接两个或者多个数组
slice(begin,end) //截取数组
splice(第几个开始,删除的个数) //删除数组

4.String

(1)基本包装类型:把简单数据类型包装成为复杂数据类型,这样基本数据类型就有了属性和方法。
(2)字符串的不可变:看上去可以改变内容,但其实是地址变了,内存中新开辟了一个内存空间。
(3)concat(str1,str2,str3)
substr(start,length)
slice(start,end)
substring(start,end)
replace(被替换的字符串, 要替换为的字符串)
字符串.split(“分割字符”)

  // 下面代码有什么问题?
  var str = 'andy';
  console.log(str.length);
  //按道理基本数据类型是没有属性和方法的,而对象才有属性和方法,但上面代码却可以执行,这是因为
  //js 会把基本数据类型包装为复杂数据类型
  // 1. 生成临时变量,把简单类型包装为复杂数据类型
var temp = new String('andy');
// 2. 赋值给我们声明的字符变量
str = temp;
// 3. 销毁临时变量
temp = null;

七.简单数据类型和复杂数据类型

1.简单数据类型(基本数据类型,值类型)

1.在存储的时候变量存储的是值本身(number,string,boolean,null,undefined)
2.存储方式:数据直接存放在栈中
3.函数的形参也可以看做是一个变量,当我们把一个值类型变量作为参数传给函数的形参时,其实是把变量在栈空间里的值复制了一份给形参,那么在方法内部对形参做任何修改,都不会影响到的外部变量
Javascript基础_第1张图片

 function fn(value){
           value++;
           console.log(value);//2
        }
        var num=1;
        fn(num);
        console.log(num);//1

2,复杂数据类型(引用类型)

  1.在存储的时候,变量存储的是地址,通过new关键字创建对象(Object,Array,Date)
  2.存储方式:栈里边存放的是地址,真正的对象实例存放在堆中
  3.函数的形参也可以看做是一个变量,当我们把引用类型变量传给形参时,其实是把变量在栈空间里保存的堆地址复制给了形参,形参和实其实保存 的是同
    一个堆地址,所以操作的是同一个对象。

Javascript基础_第2张图片

  function Star(uname,age){
            this.uname=uname;
            this.age=age;
         }
        var jay=new Star("zjl",18)
         function fn1(people){
            people.age=88;
         }
         console.log(jay.age)  //18
         fn1(jay)
         console.log(jay.age); //88

你可能感兴趣的:(javascript)