JavaScript基础
介绍
1.简称js,是一个运行在【浏览器端】的【解释型】【弱类型】【面向对象】脚本语言
-
浏览器端:环境:
- 自带JavaScript解释器 - 打开浏览器就可以自动运行
- 独立安装一个的js解释器 - 学习Node.js的时候
-
解释型、编译型:
- 解释型:在程序执行之前,不需要检查语法是否正确,直接运行,碰到错误就停止 - 自由:比如:js、php...
- 编译型:在程序执行之前,需要先检查语法是否正确,如果不正确,直接不运行 - 严格:比如:Java、C#...
-
弱类型、强类型:
- 弱类型:变量保存的数据是可以随意的,数据类型由数据来决定 - 比如:JavaScript - 自由
1 ~ number(数字 "1" ~ string(字符串) - 强类型:变量保存的数据,是由数据的类型来决定的 - 比如:Java - 严的
- 弱类型:变量保存的数据是可以随意的,数据类型由数据来决定 - 比如:JavaScript - 自由
-
面向对象 - 很难
- 以后我们可能会经常见到这种写法:
对象名.属性名; 对象名.方法名(); -
特点:
- 可以使用一切编辑工具编写js代码
- 解释型
- 弱类型
- 面向对象
- 可以做一切css完成不了的效果(轮播、选项卡、购物车、验证...)
2.如何使用js:
-
使用方式:2种
- 在HTML页面上书写一个script标签,再在里面书写js代码
<script> //js代码 </script>- 创建一个xx.js的文件,再在HTML进行引入 - 正式开发
<script src="js路径"> //千万不要在这里再写js代码 </script> -
输出的方式/打桩输出 - 帮助我们以后检查错误:3种
- 在控制台输出日志:
console.log(想要输出的东西);//console - 控制台 log - 日志,推荐:不会影响到页面 - 在页面上输出日志:
document.write(想要输出的东西);//document - 文档 write - 写,还支持标签的写法,但是是个垃圾,比如:如果搭配点击事件,会把页面上原有的东西全部替换掉 - 在弹出框输出日志:
alert(想要输出的东西);//警告框,一般般:有时候会卡住整个页面,导致用户只能看到一个白板
- 在控制台输出日志:
-
变量:创建后,可以再次修改
-
何时使用:以后反复使用到的数据,都要提前把他保存在一个变量之中,以后使用变量名,相当于就是在使用变量的值
-
语法:
var 变量名=值; -
特殊:
- 变量名其实不是随意的
1、不能以数字开头 2、建议驼峰命名法或下划线命名法 3、命名要尽量的见名知意 name,age,hobby,height,weight - 推荐:英文不好,就多学 xingming,nianling,aihao,shengao - 不推荐,逼格低 绝对不要:aa,ab,ac,ad,ae,af - 此变量名没有任何意义- 如果你的变量名是
name,不管你保存的数据类型是什么,都会悄悄的给你转为一个字符串 - 变量名不能是关键字
- 变量可以只创建,不赋值,默认值为
undefined,但是从今天开始我们要牢记undefined是一个垃圾,拿来做什么都要不得 - 如果多个变量连续创建,简写:
var 变量名=值,变量名=值,变量名=值,变量名=值,变量名=值;
-
-
常量:创建后,不允许修改了
- 语法:
const 常量名=值; - 其余特殊点和变量一模一样
- 语法:
-
了解 - 数据类型有哪些?分为两大类
-
查看数据类型:
typeof(变量); -
1、原始/基本/值类型:5个
- 扩展:用户输入框:
var 变量=prompt("提示文字"); - number - 数字:取值有无数个,而且数字就是直接写,不用加任何东西(颜色是蓝色)
- string - 字符串:取值有无数个,但是必须加上:"" 或 ''(颜色是黑色)
- boolean - 布尔:取值只有2个,分别叫true(真|对) 或 false(假|错)- 一般用于当作条件判断(颜色是蓝色)
- null - 空,取值只有1个,就是null,唯一的作用就是用于释放变量释放内存的,节约内存空间,提升网页的性能,以后会有更好的方式(颜色是灰色)
- undefined - 取值只有1个,就是undefined,从今天开始我们要牢记undefined是一个垃圾,拿来做什么都要不得,undefined是祖师爷犯的一个错,但是他自己不承认(颜色是灰色)
- 扩展:用户输入框:
-
引用/对象类型:有11个,可以暂时理解为有11个对象(属性和方法)等待我们学习
-
-
运算符:
-
算术运算符:+ - * / %
-
特殊:
-
%:取余,俗称模,两个数相除,不取商,而是取除不尽的余数
作用: 1、*任意数%2 - 判断奇偶数 2、取出某个数字的后n位 1234%10 -> 4 1234%100 -> 34 -
带有隐式转换:悄悄地会将数据类型转换,发生变化,默认:都是左右两边转为数字再运算
true->1 false->0 undefined->NaN null->0 "1000"->1000 "1000px"->NaN - 暂时解决不了,只有等待以后学习了强制(显示)类型转换才能解决 NaN::Not A Number:不是一个数字,但是他确实是数字类型,不是一个有效数字,没有优点,但是有两个缺点: 1、参与任何的算术运算结果仍为NaN 2、参与任何的比较运算结果都是false -
+运算特殊:如果碰上一个字符串,左右两边都会悄悄的转为字符串,+运算不再是+运算,而是拼接操作
-
-
比较/关系运算符:> < >= <= == != === !==
-
结果:一定是一个布尔值
-
带有隐式转换:默认左右两边都会悄悄转为数字再比较大小
-
特殊:
1、如果参与比较的左右两边都是一个字符串,则会按位PK每个字符的十六进制的unicode号(十进制ASCII码); 数字0-9<大写A-Z<小写a-z<汉字 常识:汉字的第一个字:是 一 unicode号是 4e00 ascii是19968 汉字的最后一个字:是 龥 unicode号是 9fa5 ascii是40869 2、NaN参与任何的比较运算结果都是false,带来了一个问题:如何判断x是不是NaN,我们不能使用普通的比较运算去判断 !isNaN(x) 结果是一个布尔值:true->说明是有效数字 false->说明是NaN 3、undefined==null//true 解决:全等:不带隐式转换的等值比较===,要求值相同并且数据类型也要相同 !==:不带隐式转换的不等比较
-
-
赋值运算符:= += -= *= /= %=
- =:赋值:将=右边的东西,保存到=左边的变量名之中
-后面5个可以理解为是一种升级写法,运算后再保存回变量本身,举例:
i=i+1 ==> i+=1;
- =:赋值:将=右边的东西,保存到=左边的变量名之中
-后面5个可以理解为是一种升级写法,运算后再保存回变量本身,举例:
-
逻辑运算符:综合比较 - 用于写条件
-
&&:与(并且)
全部条件都满足,结果才为true 只要一个不满足,结果就为false -
||:或者
全部条件都不满足,结果才为false 只要一个满足,结果就为true -
!:颠倒布尔值
-
-
自增自减运算符:++ --
-
自增:固定的每次只能+1
-
累加:+=每次加几由程序员自己决定
-
前++ 和 后++的区别?
如果单独使用,前++和后++,没有任何区别。 但是如果参与了其他表达式,变量始终都会+1,但是前++和后++的【返回结果】不同 前++,返回的是加了过后的新值 后++,返回的是加了之前的旧值
-
-
位运算:(底数只能是2)
- 左移:m<<n,读作m左移了n位,翻译:m*2的n次方
- 右移:m>>n,读作m右移了n位,翻译:m/2的n次方
-