js知识点

81 阅读5分钟

javascript

简称:js 是一个运行在客户端浏览器的【解释型】【弱类型】【面向对象】脚本语言。 编译型:需要先检查语法,再运行,如果语法不正确。就不会执行。(更严格) 解释型:不需要先检查语法,执行之后发现了错误,就会停止运行。(更自由) 弱类型: 变量保存的数据随意的,由数据来决定的。(自由) 强类型:变量保存的数据,由数据类型来决定的。 面向对象-(难点) 常用的写法:对象名.属性名 ,对象名.方法名(); 特点:1 可以使用一切编辑工具编写JS代码 2 可以做一切css完成不了的效果

使用JS的方法:1 直接在HTML写上一个script标签,在里面书写js代码 2 创建一个xx.js文件,在其中写入js代码,最后在HTML引用

输出方式/打桩输出/检查错误: 1在控制台输出日志:console.log(); 2在页面输出日志: document.write(); 支持标签,缺点:如果以后学会了绑定事件里面有document.write这句话,那会替换掉整个页面 3在弹出框输出日志:alert(); 缺点:会卡主整个页面,导致用户只能看到白板

变量和常量

变量:var 变量名=值 创建后,值可以修改。

以后反复使用的数据,都需要保存在变量中,使用变量名,就等同于使用里面的值

1)、变量名是随意的:

不能以数字开头,建议使用下划线命名法和驼峰命名法,命名要尽量见名之意。

2)、如果变量名为name,都会变成为默认的字符串。

常量:创建后,值不可以修改、 一个网页中需要固定的值的时候,可以使用常量,因为它的值是不可以修改的。

***** 算数运算符:+ - * / %

数据类型:

原始/基本/值类型: Number-数字,取值:无数个 String-字符串,取值:无数个 Boolean-布尔,取值:ture(真,对)和false(假,错) Undefined-取值:undefined,创建了一个变量,但是没有赋值,默认值为 undefined,都不能拿来做任何的操作。 Null-空,取值:null,不用的变量,可以进行释放,节约我们的内存空间。

数据类型的转换:不同的数据类型做操作可能出来的结果也不一样

js获取页面上的一切东西,数据类型默认都是一个字符串

查看数据类型:typeof(查看的东西) 算术运算的隐式转换:悄悄的将左右两边的东西,转为一个数字,再运算

特殊:+运算,碰上一个字符串,左右两边都会悄悄的变成字符串,+运算也不再是+运算,变了拼接操作 其他数据类型也能转为数字: true->1 false->0 undefined->NaN:只要是转为数字,但是我又不知道该转为多少的时候,结果一定为NaN null->0

其实-/%,字符串也可以转为一个数字,前提要是一个纯数字组成的字符串才能,但凡包含了一个非数字字符则为NaN "100"->100 ,"100px"->NaN

NaN:Not A Number:不是一个数字,但是确实又是数字类型,不在三界之中,不是一个有效的数字

缺点:NaN参与任何算术运算,结果仍为NaN NaN参与任何比较运算,结果都为false,甚至自己都不认识自己

强制/显示转换: 隐式转换出来的结果不是我们想要的,我们程序员就要手动调用一些方法,强制转为我们想要的数据类型,再运算 转字符串:var str=xx.toString();//xx不能是undefined和null,因为undefined和null不能使用.做任何操作 转数字:parseInt(str/num) parseFloat(str) Number(x);此方法是万能的,任何人都可以转为数字,但是很垃圾

Function的基础

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

1创建/定义/封装函数: function 函数名(){操作}

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

注意的一点是:程序员在js里写死,调用几次,就执行几次

交给用户来触发,只需要为某个元素绑定点击事件:

内容 任何一个元素都能触发点击事件

何时使用:

不希望打开页面立刻执行,而需要时再用,或者由用户来触发

希望能够反复执行,不用刷新页面

以后任何一个独立的功能体,都要单独封装为一个函数

函数在js中的地位最高:函数是第一等公民地位,所以随时随地,咱们要想着能不能封装函数

带参数的函数:

何时使用:如果我的函数体,希望根据传入的实参的不同,做的略微不同

创建:形参:形式参数,其实就是一个变量,但是不需要写var,而且默认也没有保存任何值

function 函数名(形参,...){操作}

调用:实参:实际参数,真正的值,需要你在调用函数时传入进去

函数名(实参);

特殊:

1、传参的顺序一定要一一对应上,并且数量也要对应

2、不是一定需要带参数的函数,才是好函数,具体要不要带有参数,需要看我们的需求。

如果你的函数体就是固定的 - 则普通函数搞定

如果你的函数体是根据参数的不同,做的略微不同 - 就使用带参数的函数

分支结构

程序的流程控制语句:

顺序执行--从上向下依次执行

分支结构--通过条件判断,选择部分代码执行

循环结构--通过条件判断,选择要不要重复执行某块代码

比较运算符:>= <= > < == !=

用于做判断的,结果一定是一个布尔值

强调:

=:不是比较,而叫做赋值操作,把等号右边的东西保存到等号左边

如果你想要判断多个条件,绝对不能像小时候数学的写法:18<=age<=65,错误的!在代码里不支持

逻辑运算符:

&&:与、并且。要求全部条件都满足,最后的结果才为true,只要有一个条件不满足,结果则为false

:或。要求全部条件都不满足,最后的结果才为false,只要又一个条件,结果则为true

!:颠倒布尔值:!true -> false !false -> true

分支的语法: 1一个条件,一件事,满足就做,不满足就不做

2一个条件,两件事,满足做第一件,不满足做第二件

3多个条件,多件事,满足谁,就做谁