JavaScript基础

293 阅读5分钟

JavvScript(高级编程语言)

js的三大组成部分
1 ECMAScript——JavaScript语法
2 DOM——页面文档对象模型
3 BOM——浏览器对象模型

计算机语言
机器语言(二进制能直接被计算解读并执行的语言)、汇编语言和高级编程语言

js的样式

1.行内式js

<input type="button" value ="点我试试” onclick=“alert(‘hello,world’)”/>

2.内嵌式js

<script>alert(''hello,world): </script>

3.外部引用js文件

<script src="my.js"></script>

单行注释:command+/或加// 多行注释:/结束用/就可以了

JavaScript输入输出语句
alert(msg) 浏览器弹出警示框
console.log(msg) 浏览器控制台打印输出信息,写代码检测代码是否执行的了
prompt(info) 浏览器弹出输入框,用户可以输入

变量

变量:存放数据的容器,通过变量名获取数据,甚至数据修改
var age; age程序员定义的变量名
赋值 age=10;//给这个变量赋值为10
输出结果 console。log(age);
var age=10;变量的初始化

数据类型

js的变量数据类型是只有程序在运行过程中,根据等号右边的值来确定的
简单数据类型:
Number: 数字型包含整数和小数
Boolean: 布尔值型,如true,false,等价于1和0
String: 字符串型,如“张三”,都要加引号
Undefined: var a;声明变量a,但没有给值,此时a=undefined
Null: var a=null;声明了变量a为空值
八进制前面加0,如012是10;
十六进制前面0x,取值0-9,a-f;0xb=11
Infinity 无穷大 -Infinity负无穷大
NaN not a number(不是一个数字) isNaN(x)x是数字,返回false;x不是数字,返回true。

标识符

标识符就是变量,函数,属性或函数参数的名称
标识符:第一个字符必须是字母,下划线(_)或美元符号($);
驼峰大小写法:第一个单词首字符小写,后面每个单词首字母大写
”onClick“
typeof区分类型可以判断数据类型,如string字符串型

str嵌套

字符串引号嵌套(必须加引号)
js可以用单引号嵌套双引号或(外双内单,外单内双)
字符串转义符
\ n 换行符,n是newline的意思;
\ \ 斜杠\;
\ ' 单引号';
\ " 双引号”;
\ t 缩进tab;
\ b 空格,b是blank的意思
检测获取字符串的长度length
var str='names'; alert(str.length);//显示5
字符串拼接
多个字符串之间可以使用+进行拼接,字符串+任何=拼接之后新字符串
数值相加,字符相连

  console.log('12'+12)  //1212;  
  console.log(12+12)    //24  
var age=18  
console.log('小粉'+age+'岁');  //小粉18岁
typeof判断变量属于什么类型
  var num=10console.log(typeof num); //number  
instanceof判断对象是什么类型

检测引用值或对象为ture,检测原始值为false

数据类型转换

1.转换为字符串
//toString()
      var num = 1;
      console.log(num.toString())  //1(字符串)
      //String()强制转换 
      var num = 1;
        console.log(String(num))  //1(字符串)
      //加号拼接字符串 
      var num = 1;
        console.log(num + "字符串")//1字符串
2.转换为数字型
parseInt(string); 将string变成整数数值型 ,
parseInt('78')  
parseFloat(string);将string变成浮点数数值型
parseFloat('78.21')  
Number()强制转换;将string变成数值型
Number('12')  
js隐式转换(- * /)利用运算隐式变成数值型(‘12’-0)
parseIntparseFloat该大写要大写,该小写要小写,  
3.转换为布尔型

Boolean()代表空、否定的值会被转换为true。

运算符运算符(operator)

递增和递减运算符: (++)或(--)写在变量的前面
前置先自加1或自减1,后返回值(++1)
后置自增,先返回原值,后自加(1++)
比较运算符
< 小于号; > 大于号; >= 大于等于号; <= 小于等于号; == 判等号(会转型); != 不等号; === 全等;

逻辑运算符

&&“逻辑与”and ; ||“逻辑或”or ; !“逻辑非”not
短路运算
1.逻辑与:语法:表达式1 && 表达式2;
如果第一个表达式的值为真,则返回表达式2
如果第一个表达式的值为假,则返回表达式1
2.逻辑或:语法:表达式1 || 表达式2;
如果表达式1结果为真,则返回表达式1
如果表达式1结果为假,则返回表达式2
3.逻辑非:
如果结果为true在非逻辑里则为false
如果结果为false在非逻辑里则为true

流程控制

三种结构:顺序结构,分支结构,循环结构
顺序:一元运算里逻辑非优先级很高
逻辑与比逻辑或优先级高

1.分支流程控制if语句

执行思路;如果if里的条件表达式结果为真(true)则执行大括号里面的执行语句
如果if条件表达式结果为假则不执行大括号里面的语句则执行if语句后面的代码

语法:
if(条件表达式){
    //语句1;
} else if(条件表达式2) {
    //语句2;
} else{
    //语句3
}  

只能多选1,如条件1不满足就往下,看2满足不,都不满足执行else里面的语句

2.三元表达式:

表达式 ? 表达式1 : 表达式2
如果表达式为真则返回表达式1的值,如果表达式为假则返回表达式2的值。

3.分支流程控制switch语句
switch(表达式){ //表达式与value1,value2相匹配;匹配值时是全等    
case value1:  执行语句1breakcase value2:  执行语句2breakdefault: 最后的语句;
}

case小例子或者选项的意思;switch里如果case没有break,就不会退出,会继续执行下一个case,如果没有匹配的就会执行default里面最后的代码

循环

循环:规律性的操作,循环可以重复执行某些语句

一、for循环:被重复执行的语句为循环体,能否继续执行取决于终止条件。它们两个所组成的为循环语句。

语法
for(初始化变量;条件表达式;操作式){//循环体}

//1.初始化变量就是var声明一个普通变量,通常用于作为计数器使用,  
//2.条件表达式就是用来决定每一次循环是否继续执行,是终止的条件  
//3.操作表达式是每次循环最后执行的代码经常用于我们计数器变量  
for(var i = 1; i <= 100;i++){
  console.log('你好吗?')
} 
//输出100次"你好吗?",i是index的缩写

for循环输出如果显示在一行:追加字符串

var str = '';
for (var i = 1; i <= 5; i++) {
str = str +"想循环的文本";  //输出就会在一行上
}

二、for双重循环
for(外层的初始化变量;外层的条件表达式;外层的操作表达式){循环体;
for(里层的初始化变量;里层的条件表达式;里层的操作表达式){
//执行语句(循环体)}}

三、while循环
while(条件表达式){ //循环体;}里面也有操作表达式:i++

var i = 0
  while(i<5){
      console.log(i);
      i++;  //如果不改变i,函数就会一直打印
  }

四、do while循环
该循环会在检查条件是否为真之前执行一次代码块,然后如果条件为真的话,就会重复这个循环。

  do{
    循环体; 
    i++
  }                 //会先执行一次代码
  while(i <= 100)  //如果条件满足就会继续执行上面代码

continue: 退出当前循环,继续执行下一个循环
break: 退出整个循环,后面循环不再执行

sources 断点调试,找到要调试的文件,然后找到要调试的那行代码刷新一下页面

数组(Array)

数组是指一组数据的集合,其中的每个数据被称为元素,在数组中可以存放任意类型的元素。数组是一种将一组数据存储在单个变量名下的优雅方式。
数组的创建方式

1.利用new创建数组    
var num =new Array();       //创建了一个空的数组 
var arr =ew Array([1,2,3]); //创建了一个有3个元素的数组,长度为3

利用数组字面量创建数组

var 数组名=[]; 
var arr=[’第一个数组元素‘,2,'pink',true]
;索引号:0123  //索引号0是第一个  
数组的索引:数组名[索引号[;索引号从0开始的

遍历数组:就是把数组的元素从头到尾访问一次

var arr = ['red','green','blue'];
for(var i=0; i < 3; i++){
console.log(arr[i])
}  

数组长度 arr.length 数组名.length 动态检测数组
想要输出多变量,用逗号隔开 如console.log(arr1,arr2,arr3)

数组中新增元素

1.通过修改length长度新增  
var arr=[1,2,3,4]  
arr.length = 5  //新增的元素没有给值,默认为空(undefined)  
2.通过修过数组索引新增元素  
arr[3]=’pink‘ //[1,2,3,"pink",empty]如索引号没有被占用则赋值,如果有占用就替换掉。  
不能直接给数组名赋值,否则会覆盖掉以前的数据
arr=[5,6,7]  //[5,6,7]

冒泡排序
双重for循环里嵌套一个if

//把数组前一个和后一个比较,如果前一个比后一个大,就把他们交换位置
var arr = [5,1,2,4,3]  
for(var i = 0 ; i <= arr.length ;i++){
for(var j = 0 ; j < arr.length-i-1;j++){
if(arr[j] > arr[j+1]){
var temp = arr[j];
arr[j] = arr[j+1];
arr[j+1]=temp
}  
}}
console.log(arr);   //[1,2,3,4,5]

函数

函数就是封装了一段可以被重复执行调用的代码块
声明函数(function 函数名() {//函数体})
函数名一般为动词,函数不调用自己不执行
调用函数:函数名+()如:move();
在声明函数的小括号里面是形参,在函数调用的小括号里是实参
形参是接受实参的参数(传递参数)
函数的参数可以有;也可以没有个数,不限个数
return 返回值:return把值返回给函数调用者

函数表达式

在函数中表达式储存在变量后,变量也可作为一个函数使用

    var x = function(a,b) {return a * b};
    var z = x(4,3);
    console.log(12);

上面的函数实际上是一个匿名函数(函数没有名称)
函数储存在变量中,不需要函数名称,通常通过变量名来调用

function构造函数
    //构造函数需要使用new关键字来调用,首字母大写
    var myFunction = new Function("a","b","return a * b");
    var x = myFunction(4,3);
    等价于
    var myFunction = function(a,b) {return a * b};
    var x = myFunction(4,3);
函数自执行

如果函数表达式后面紧跟(),则会自动调用,通过添加括号,来说明它是一个函数表达式 自执行函数的三种写法:

  1. (function("参数") {"函数方法"})("给参数传的值")
  2.function("参数") {"函数方法"}("给参数传的值"))
  3. !function("参数") {"函数方法"}("给参数传的值")
  第三种!可以换成其他运算符或者void

预解析

image.png

数组对象

添加删除数组元素

1.push() 在我们数组的末尾添加一个或者多个数组元素

var arr = [1,2,3];
arr,push(4,5,6,'red')
console.log(arr);

image.png

2.unshift() 在我们数组的开头,添加一个或者多个数组(unshift和push差不多)

3.pop() 可以删除数组的最后一个元素,pop里面不跟参数,一次只能删除一个,返回值是删除的元素

4.shift()可以删数组的第一个元素

image.png

image.png

排序

image.png

数组索引返回

image.png

根据位置返回字符

image.png