JavaScript基础

1.JS分为三种 行内 内嵌 引入


①行内 
②内嵌 在head中写<script>
③引入  外部写JS 运用 <script src="my.js">   <script>引入


2.JavaScript 输入输出


①alert() 输出的意思 
②prompt() 输入框的意思
③console.log() 控制台输出 控制台打印输出


3.变量


声明变量 var 变量名

声明多个变量 变量名之间用“,”隔开。
例如 var name = '张三',
               age = '18'
               sex = '男'

4.简单数据类型


JS的变量数据类型只有程序在运行过程中根据等号右边的值来确定的
变量数据类型是可以变换的


①数字形Number


在JS中八进制前面加0,十六进制加0x
JS最大值Number.MAX_VALUE
JS最小值Number.MIN _VALUE

isNaN(值) 这个方法用来判断值非数字 并且返回一个值 如果是数字返回false 如果不是数字返回是true

②字符串形 String


需要加“”或者‘’
如果想要在字符串内加“ ”或者‘ ’必须保持外双内单  或者外单内双    
\n 换行  \b空格
获取字符串长度 length属性
字符串拼接 +号(只要有字符串和其他类型拼接+则最后结果为字符串类型)

③布尔型 Boolean

true 和 false  
true 参与运算当1来看
false 参与运算当0来看

如果一个值声明但未赋值 则输出Undefined

5.获取检查变量数据类型 typeof


用法 console.log(typeof 变量名)

6.转化字符串的三种方法

console.log(变量名.toString());
console.log(String(变量名));
利用 + 号拼接字符串

7.转化为数字形的三种方法


①console.log(parseInt(变量名)); 得到是整数 小数点后全部取消  去掉单位 字符串过多 会显示NaN
②console,log(parseFloat(变量名));得到的可以是小数 浮点数
③Number() 强制转化数字形   console.log(Number(变量))
④利用算数运算 隐式转化 (- 或者 * 或者 /)
例如console.log('12'-0) 得到的是数字形的12

8.转化为布尔类型的


console.log(Boolean(变量名0));
代表空、否定的值会被转化为false, 如"、0、NaN、null、undefined
其余值均为true

9.递增递减运算符


++变量,--变量   
或者
变量++,变量--
     和C#区别  C#   只有 i++ ,i--  表示递增

10.逻辑 与逻辑中断


&&  与         
||      或
!       非
逻辑中断 &&  (数字中只有0是假)
表达式1 && 表达式2
如果1为真,则返回2
如果1为假,则返回1


逻辑中断 ||
表达式1 || 表达式2
如果1为真,则返回1
如果1为假,则返回2


11.switch

switch(表达式){
    case value1(匹配项):
    执行语句1;
    break;

    case value2:
    执行语句2;
    break;
    ....

    default:
        执行最后语句
}

switch 用于比较确定的  
if else if 用于范围类型判断

12.创建数组


方法①:var 数组名 = new Array();


方法②:使用数组字面量方式创建空的数组;
var 数组名= [ ];     可以存放任意数组

13.获取数组元素  索引


数组名[索引];

14.JavaScript  可新增数组元素

改变length 值后 修改数组 
arr.length=i;
再利用索引arr[i-1]=值; 添加值


15.JS函数


函数就是封装了一段可以被重复执行调用的代码块

声明函数
function 函数名() {
    函数体
}

调用函数
函数名();


声明函数小括号形参
调用函数小括号实参
形参接受实参

函数返回
function 函数名(){
    return 需要返回的结果
}
函数名();

return 将值返回给调用者  然后输出函数 就能得到值

16.arguments 对象


arguments 对象中存储了传递的所有实参   伪数组的性质
可以按照数组的方式遍历arguments
只有函数才有 arguments 对象
arguments 接受所有的实参     

伪数组:
1.具有数组的length属性
2.按照索引方式存储
3.它没有真正数组的一些方法 pop() push()等等


17.JS函数的俩种声明方法


①利用函数关键字自定义函数(命名函数)
function 函数名(){
    函数体
}
函数名();
②函数表达式(匿名函数)
var 变量名=function () {}
变量名();


18.JS的作用域


JS作用域:就是代码名字(变量)在某个范围内起作用和效果 目的是为了提高程序的可靠性更重要的是减少命名冲突

全局作用域:整个script标签 或者一个单独JS标签

局部作用域(函数作用域):在函数内部就是局部作用域 这个代码的名字只在函数内部起效果和作用


作用域链:链式查找 就近原则

19.预解析


JS引擎运行JS 分俩步:预解析  代码执行
①预解析 把当前的var  function 声明放到最前面
②代码执行 按照从上到下的顺序执行代码s

预解析分为 变量预解析(变量提升)和函数预解析(函数提升)
变量提升  就是把所有的变量声明提升到当前的作用域最前面   不提升赋值操作
函数提升  就是把所有的函数声明提升到当前作用域的最前面   不调用函数


20.JS对象

①对象是一组无序的相关属性和方法的集合   是由属性和方法组成的
属性:事物的特征,在对象中用属性来表示
方法:事物的行为,在对象中用方法来表示

对象里面可以储存任意数据类型
var 对象名={ }

②使用对象
 方法一:调用对象属性  采取 对象名.属性名
 方法二:对象名['属性名']

调用对象里面的方法  采取  对象名.方法名(有参数加参数);


21.创建对象的三种方法


①var 对象名={ }

②利用new Object 创建对象
var 对象名 = new Object();

③构造函数创造对象
function 构造函数名(参数){
      this.属性 = 值;
      this.方法 = function(){}
}
var 变量名=new 构造函数名(参数);
想要添加 就继续  构造  var 变量名 =  new 构造函数名();

构造函数名字首字母大写
构造函数不需要return 就可以返回结果
我们要构造函数必须要new
我们只要new 构造函数名()  调用函数就创建一个对象 变量名();
我们的属性和方法前面必须添加 this

我们利用构造函数创建对象的过程也称之为对象的实例化


new 在执行时会做的四件事情
 ①在内存条中创建一个新的空对象
 ②让this指向这个新对象
 ③执行构造函数里面的代码,给这个新对象添加属性和方法
 ④返回这个新对象(所以构造函数里面不需要return)

遍历对象属性
for(var 变量名 in 对象名){
           console.log(对象名[变量名])
}


22.内置对象


JS内部自带的对象 可以直接调用
JavaScrpit 对象分三种:自定义对象 内置对象 浏览器对象

23.Math对象(数学对象)

不需要new 构造 直接调用
Math.方法();

常见的Math
最大值 Math.max();
最小值 Math.min();
绝对值方法 Math.abs(1);
取整的三个方法:
向下取整 向小的取整 Math.floor();   
向上取整 向大的取整 Math.ceil();   
四舍五入取整 .5往大了取整 Math.round();

random()随机数   取[0,1) 之间的数  左闭右开
① 俩个数之间的随机整数  包括这俩个整数  
Math.floor(Math.random()*(max-min+1))+min;

function getRandom(min,max){
    return Math.floor(Math.random()*(max-min+1))+min;
}

24.Date日期对象


调用Date对象需要构造函数  必须要new
var 名称 = new Date();  
①如果没有参数,返回系统现在的时间
②参数常用写法 数字型2019,10,01 或者是 字符串型 '2019-10-1 8:8:8'
③自定义写法
var da = new Date();
da.getFullYear();  返回当前年份
da.getMonth();  返回当前月份(0-11)使用使用时候都是 da.getMonth+1;
da.getDate();  返回的当前日份
da.getDat(); 返回星期几(周一到周六是1-6 周日是0)
da.getHours();  获取当前小时
da.getMinutes(); 获取当前分钟
da.getSeconds(); 获取当前秒钟

④Date总的毫秒数(时间戳)
1970年1月1日 为初始时间   到现在一共多少毫秒
var date = new Date();
date.valueOf(); 
date.getTime();
简单写法 
var date1 = +new Date();
更简单H5新增获取总的毫秒数
Date.now();

d=parseInt(总秒数/60/60/24); //计算天数
h=parseInt(总秒数/60/60%24);// 计算小时
m=parseInt(总秒数/60%60); //计算分数
s=parseInt(总秒数%60);//计算当前秒数 

小于10的时间前面加0 常用三元表达式 例如:h=h<10? '0' + h : h;


25.Array数组对象

instanceof 运算符 检查是否为数组
用法:数组名 instanceof Array   
返回true 或者 false

①数组方法 Array.isArray(数组名); 也是判断是否数组 返回true和false  优先于 instanceof

②push() 在外面数组的末尾 添加一个或者多个数组元素 
    数组名.push();   参数直接写 数组元素就可以了   push()完毕之后返回的是新数组的长度

③unshift() 开头添加数组
    数组名.unshift();  参数直接写 数组元素就可以了   unshift()完毕之后返回的是新数组的长度

④pop() 删除数组的最后一个元素
    数组名.pop();    一次只能删除一个元素 不跟参数  pop()完毕后返回删除的那个元素

⑤shift() 删除数组的第一个元素
    数组名.shift();  一次只能删除一个元素 不跟参数  shift()完毕后返回删除的那个元素

⑤reverse() 翻转数组顺序
数组名.reverse();

⑥sort() 数组排序(冒泡排序)
数组名.sort();    注意点:sort是按照个位数大小先排列的  如果有个位数以上  例如:1,7,13 排序的话 sort后是                          1,13,7 先排个位再排十位。

            解决方法:数组名.sort(function(a,b){ 
                return a-b;
                    }) ;  这个是升序  如果降序就是 return b-a;  

⑦indexOf()  返回元素索引号 参数写元素 如果没有返回-1   
⑧lastIndexOf() 倒数元素 然后返回索引  参数写元素 如果没有返回-1  如果数组有重复元素 则会返回第一个碰到元素的索引  后面重复元素不会再返回

⑨join();  分隔符符号  在数组中每个元素后面添加里面添的参数
数组名.join(); 

⑩concat(); 可以在现有数组的全部元素基础上创建一个新数组
新数组=要克隆的数组名.concat();    参数中添上需要添加的其他元素   

26.String 字符串对象


对象才有 属性和方法  复杂数据类型才有 属性和方法
简单数据类型为什么会有length属性呢?
基本包装类型:就是把简单数据类型 包装成为了 复杂数据类型  这样简单数据类型就有属性和方法了


字符串是不会变的  只是地址改了  会在内存中开辟一个空间  修改只会改变地址

利用indexOf('查找元素',[起始位置]) 查找字符串位置


根据位置返回字符 
charAt(index);


字符串拼接
链接字符concat()  

截取字符substr('截取位置','截取几个字符')   第一个是索引  第二个几个字符

替换字符 replace('被替换字符','替换的字符')

字符串转化数组 split('该字符串的分隔符')     数组转化字符串 join(转化成字符串后之间的分隔符);


27.简单和复杂数据类型


简单数据类型  值类型
复杂数据类型  引用类型

堆和栈
①栈(操作系统):由操作系统自动分配释放存放函数的参数值、局部变量的值等。其操作方式类似于数据结构中的栈。         简单数据类型存放栈
②堆(操作系统):存储复杂数据类型(对象),一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收。          复杂数据类型存放堆


简单数据类型会在栈里面开辟空间 储存值 
复杂数据类型也会在栈里面开辟空间 单储存的是地址 十六进制表示  地址指向堆  堆里面储存着复杂数据类型的数据
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值