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多个条件,多件事,满足谁,就做谁