javascript基础

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


什么是javascript

javascript,简称js。是一个运行在客户端浏览器的解释型、弱类型、面向对象的脚本语言

  1. 编译型 在程序运行之前,需要先检查代码语法是否正确,如果语法错误,直接不会运行(比较严格的)--------java、c++。
    解释型 在程序运行之前,不需要检查代码语法,直接运行,直到碰到错误就会停止后续代码(更加的自由)--------javascript、php。

  2. 强类型:变量保存的数据有数据的类型决定。
    弱类型:变量保存的数据是数据决定的。

JavaScript的特点:
1.可以使用一切编码工具编写js代码
2.解释型
3.弱类型
4.面向对象
5.可以做一切css做不了的事
如何使用js:(两种方式)
1.直接在HTML上创建一个script标签,将js代码写在标签之内(在初学的时候可以用这种方式)
<script> js代码 </script>
2.创建一个.js文件,将js代码写在这里面,然后再HTML中引入(在正式开发中)
引入方法:<script src="此处写你引入js代码的路径"> 不能再写js代码 </script>

输出方式:(3种)
1.在控制台输出日志 console.log(输出的东西) //console(控制台) log(日志)【在学习的时候常常要用到这个,来检查我们写的代码是否正确,是否达到想要的效果】
2. 在页面输出日志 document.write( ) //document(文档) write(写入)
3. 在弹出框输出日志 alert( )//会在页面弹出一个框


一、变量和常量

什么叫变量:创建后,值可以进行修改

什么时候使用:以后反复使用到的数据,都要将其存入一个变量当中,以后使用变量名字,相当于在使用变量的值

如何使用: var 变量名=变量的值

变量名的规则:
1.不能以数字开头
2.建议下划线命名法,驼峰命名法
3.命名的时候尽量见名知意
注意:当你变量名为name时,不管你输入的什么数据类型,都会变为字符串
4.变量名字不能是关键字

常量
常量创建后,值不能修改

语法:count 常量名 = 值;

二、数据类型

1.原始/基本/值类型(5个)

1.Number //数字
2.string //字符串
3.undefined //取值:undefined
4.null //空
5.Boolean //布尔型   取值:true/false

2.引用/对象类型

11个对象(属性和方法)


三、数据类型的转换

不同的数据类型做操作可能出来的结果不一样
js获取页面上的一切东西,数据类型默认都是一个字符串
查看数据类型代码
typeof( )

算术运算的隐式转换

默认:悄悄的将左右两边的东西,转为一个数字,再运算

特殊:

       1.+运算碰上字符串,结果会进行拼接操作
       
       2.别的数据类型也会转为数字
       
       3.其实 - * / %,也能将字符串转为一个数字,前提是要是一个纯数字组成的字符串才能行,但凡包含了其他字符就会百年未NaN
       
       4.NaN:Not A Number : 不是一个数字,但确实又是数字类型,只能说是不是一个有效的数字()

由此引出了一个问题:我们没有办法使用普通的比较运算来判断x是不是NaN

解决办法:
利用 isNaN 结果为true时,就说明不是一个有效数字。
但在开发时,还是用 !isNaN ,结果为true时,就说明是一个有效数字

强制/显示转换

隐士转换出来的结果不是我们想要的,就需要手动调用一些方法,强制转为我们想要的数据类型

1.转字符串:var str = xx.tostring() // xx不能时undefined和null

2.转数字(3种)
parseInt();
原理:专门为字符串转为数字准备的,从左向右依次读取每个字符,如果碰到非数字字符就会停止转换,如果一来就碰到了不认识的字符,结果就为NaN(小数点是不认识的)

console.log(parseInt(100.5));//100
console.log(parseInt("100.5"));//100
console.log(parseInt("100px"));//100
console.log(parseInt("px100"));//NaN
console.log(parseInt("1px00"));//1
console.log(parseInt(true));//NaN
console.log(parseInt(false));//NaN
console.log(parseInt(undefined));//NaN
console.log(parseInt(null));//NaN

paseFloat();
原理:几乎和parseInt一致的,只是认识小数点

console.log(parseFloat(100.5));//100.5
console.log(parseFloat("100.5"));//100.5
console.log(parseFloat("100.5px"));//100.5
console.log(parseFloat("px100.5"));//NaN
console.log(parseFloat("10px0.56"));//10
console.log(parseFloat("100.5.5.5"));//100.5
console.log(parseFloat(".555"));//0.555

③Number(); 此方法是万能的,任何人都可以转为数字
这种方式完全等效于隐式转换,还不如直接利用隐式转换

四、Function基础

Function:函数,也称之为方法。需要预定义好的,以后就可以反复使用的代码段

如何使用(2步)
1.创建/定义/封装函数:
function 函数名(){若干个函数体/代码段/操作}

2.调用/使用函数
函数名();

注意:1.程序员调用几次,就执行几次
2.交给用户来触发,只需要为某个元素绑定点击事件
<buttom onclick=" "> </buttom>

3.何时使用:
①不希望打开页面就立即执行,而是需要再用,或者用户触发的时候才执行
②希望能够反复执行,不用刷新页面
③以后任何一个独立的功能提,都要单独封装为一个函数
④函数在js中的地位最高:随时随地、都要想到封装函数

4.带参数的函数
创建
形参:形式参数,其实就是一个变量,但是不需要写var,而且默认也没有保存任何值
function 函数名(形参1,形参2,...,形参n){}
调用
实参:实际参数,真正的值,需要你在调用函数时传入进去实参

注意:1.传参的顺序一定要一一对应,并且数量也要对应
2.不是一定需要带参数的函数才是好函数,具体要不要带参数,需要看我们的需求

自定义Function

什么是函数:需要先定义好,可以反复使用的一个代码段
如何使用:
1.不希望页面打开就立刻执行
2.以后可以反复使用
3.希望绑定在页面元素上

使用

①创建并调用
1.创建(2种方式)

1.【声明方式】创建函数
function 函数名(形参1,形参2,...){
      函数体
      return 返回值/结果;
}


2.【直接量方式】
var 函数名=function(形参1,形参2...){
      函数体;
      return 返回值/结果;
}

通过第二种创建方式:学到了一个点:函数名其实就是一个变量名

②调用var result=函数名(实参,...)
其实return的本意是退出函数,但是如果return后面跟着一个数据,顺便将数据返回到函数作用域的外部,但是return只负责返回,不负责保存,所以调用函数时,如果里面有return操作,记得拿一个变量接住结果
就算你省略return,默认也会返回return undefined;具体要提要不要结果,看自己

作用域(2种)

1.全局作用域:
全局变量和全局函数,在页面的任何一位置都可以访问到
2.函数作用域:局部变量和局部函数,在【当前函数调用时内部可用】

变量的使用规则:优先使用局部的,局部没有找到找全局,全局没有就报错
特殊:
1.千万不要在函数种对着未声明的变量直接赋值,就会导致全局污染(全局没有的东西,突然被局部添加上)
2.局部可以使用全局的,但是全局不能使用局部的

声明提前

在程序正式执行之前,悄悄的将var声明的变量(轻)和function声明的函数(重)集中提前到【当前】作用域顶部,但是赋值留在原地

声明方式创建的函数会完整提前
直接量方式创建的函数不会完整提前,只有变量部分提前

按值传递

如果传递的时【原始类型】的值:
修改一个变量,另一个变量不会受到影响的,其实就是复制了一个【副本】给对方
如果传递的时【引用类型】的对象:
修改一个变量,另一个变量是会受到影响的,因为大家其实操作都是同一个地址值

循环

循环

循环三要素:
①循环条件:开始 ------- 结束,循环次数
②循环体:做的操作是什么
③循环变量:记录着我们当前在那一次,而且它不断的变化

while循环

语法:

var 循环变量=值;
while(循环条件){
  循环体;
  循环变量发生变化;
}

执行原理:首先创建了循环变量,判断循环条件,如果条件满足,则做一次循环体操作,并不会退出循环,然后再次用变化的循环变量和循环条件做比较,则再做一次循环体的操作,如此循环,直到条件不满足为false的时候,就会退出循环

注意:宏观上感觉循环转瞬即逝,但是微观上是一次一次执行的

特殊:1.有的时候真的有可能使用死循环(不确定循环次数的时候)
2.退出循环语句:break;-------只能用于循环之中,多半都是搭配死循环使用

for循环

原理和while原理一样的,但是看起来比while循更简介,更舒服
语法:

for(循环变量=;循环条件;循环变量的拜年话){
              循环体
}

那么while和for的区别是什么呢?
实际上,while和for几乎没有区别:
一般来说我们不确定循环次数的时候,会使用while循环(死循环)
一般来说我们确定循环次数的时候,会使用for循环------------更整洁,大部分情况下

操作元素

前提:找到元素才可以操作

操作元素内容

1.innerHTML----------获取和设置开始标签到结束标签之间的内容(支持识别标签的)
获取:elem.innerHTML;
设置:elem.innerHTML=“新内容”;
innerText---------获取和设置开始标签到结束标签之间的文本(不支持识别标签的)
获取:elem.innerText;
设置:elem.innerText=“新文本”;
以上两个API都是为了双标签准备的
3.value---------专门为获取input的value值准备的
获取:input.innervalue;
设置:input.innervalue=“新文本”;

操作元素的属性

获取属性值:elem.getAttribute(“属性名”);
设置属性值:elem.setAttribute(“属性名”,“属性值”);
简化版
获取:elem.属性名;
设置:elem.属性名=“属性值”;
简化版的缺陷:
1.class必须写为className
2.不能操作自定义属性

操作样式

现在正在第二阶段js的学习,所以就用js来操作内联样式,有以下几个好处:
1.不会牵一发动全身
2.优先级最高

①内联样式:
获取:elem.style.css属性名=“css属性值”;
特殊:1.css属性名,有横线的地方,去掉横线,换位小驼峰命名法
2.获取时,只能获取内联样式
②内部样式表
③外部样式表

总结
只要是获取,往往都是用于判断操作
只要是设置,其实也就可以理解为修改

绑定事件

elem.on事件名=function(){
操作
}

this关键字
如果是单个元素绑定事件,this–>这个元素
如果是多个元素绑定事件,this—>当前触发事件的元素

五、数组

创建一个变量可以保存多个数据

数组都是线性排列,除了第一个元素,每个元素都有唯一的前驱元素

除了最后一个,每个元素都有唯一的后驱元素

***每个元素都有自己的一个位置,称之为下标,下标是0开始的,到最大长数-1结束。

1、创建数组:2种

1.直接量方式:

​ var arr=[]; //空数组

​ var arr=[数据1,数据2,…];

2.构造函数方式:

​ var arr=new Array();

扩展:javascript其实由三部分组成:

​ 1.ECMAscript -------核心语法

​ 2.DOM ----- Document Object Model —文档对象模型,文档:HTML

​ 3.BOM — Browser Object Model ----- 浏览器对象模型,操作浏览器的

2、获取数组之中的数据:

​ 数组名[下标];

3、后续添加/替换元素:

数组名[i]=新数据;

如果下标处没有人,那么则为添加;如果有人,则为替换

4、数组具有三大不限制:

1.不限制元素类型

2.不限制元素个数

3.不限制元素的下标越界 ----- 是一个缺点:如果获取元素,下标越界,返回的是一个undefined;如果是添加元素,下标越界,会得到一个稀疏数组,如果搭配上循环去遍历数组,则会得到很多很多undefined

问题:数下标太麻烦,可能数错

5、解决:数组中有一个唯一的属性

如何使用:数组名.length;

​ 作用:获取数组的长度,长度从1开始

三个固定套路:

1.向末尾添加元素:arr[arr.length]=新值;

2.获取数组的倒数第n个元素:arr[arr.length-n]=新值;

3.缩容:缩减容量,删除倒数n个元素:arr.length-=n;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值