的上方
通过sript标签,引用到html页面里
单行注释 ctrl+/
多行注释 shift+alt+a
结束符 分号,可写可不写
document.write(‘要输出的内容’)也可以加标签(<h1>要输出的内容</h1>
),标签加在``里不起效
alert(‘’)
console.log(‘控制台打印’)
prompt(‘’)
数字字面量,字符串字面量,数组字面量,对象字面量
存储数据的容器,用于存储数据
let 变量名 = 值
let age = 18,name = asd,逗号隔开但最好一行声明一个变量
不能用关键字
关键字:有特殊含义的字符,JavaScript内置的一些英语词汇。例如:let、var、if、for停
只能用下划线、字母、数字、$组成,且数字不能开头
字母严格区分大小写,如Age和age是不同的变量
起名要有意义
遵守小驼峰命名法
第一个单词首字母小写,后面每个单词首字母大写。例:userName
可以先使用在声明(不合理)
var声明过的变量可以重复声明(不合理)
比如变量提升、全局变量、没有块级作用域等等
let arr = []
元素:数组中保存的每个数据都叫数组元素
下标:数组中数据的编号
长度:数组中数据的个数,通过数组的length属性获得
使用const声明的变量称为“常量”。
当某个变量永远不会改变的时候,就可以使用const来声明,而不是let。
和变量一致
//声明一个常量
const G = 9.8
/输出这个常量
console.log(G)
注意:常量不允许重新赋值,声明的时候必须赋值(初始化)
小技巧:不需要重新赋值的数据使用const
number数字型,除了0,其余数字都为真
NaN表示一个错误并且是粘性的
string字符串型,除了空字符串,所有字符串都为真
想要输出单引号等可以用转义符''
变量不能加单引号双引号反引号
+可以实现字符串拼接,例如:document.write(‘我今年’+age+’岁了’)
模板字符串:document.write(我今年${age}岁了
)自动识别换行
boolean布尔型 let isCool = true
undefined未定义型,没赋值,不确定是什么类型
null空类型
typeof 变量名
规则:
+号两边只要有一个是字符串。都会把另外一个转成字符串
除了+以外的算术运算符比如-*/等都会把数据转成数字类型
小技巧:
+号作为正号解析可以转换成数字型(+’123’)
任何数据和字符串相加结果都是字符串
常见错误:
prompt传过来的为字符串类型,输出两数相加时,要先转换为数字型
Number(数据)转成数字类型
如果字符串内容里有非数字,转换失败时结果为NaN(Not a Number)即不是一个数字
NaN也是number类型的数据,代表非数字
parselnt(数据)只保留整数
parseFloat(数据)可以保留小数
=,+=,-=,*=,/=,%=
++,–
结果为7
有隐式转换,(2==’2’)为true
可以比较字符串,从左到右比较,第一位一样再比较第二位
尽量不要比小数,有精度问题>
左边是否大于右边
<左边是否小于右边>=
左边是否大于或等于右边
<=左边是否小于或等于右边
==左右两边值是否相等
!=左右两边是否不相等
===左右两边是否类型和值都相等(开发中常用)
!==左右两边是否不全等
1小括号()
2一元运算符++
3算数运算符先*/%后+-
4关系运算符>,>=,<,<=
5相等运算符==,!=,===,!==
6逻辑运算符先&&后||
7赋值运算符=
8逗号运算符
表达式:因为表达式可被求值,所以它可以写在赋值语句的右侧。
num=3+4
语句:而语句不一定有值,所以比如alert()for和break等语句就不能被用于赋值。
alert()弹出对话框console.log()控制台打印输出
if:单分支、双分支、多分支
三元运算符: 条件?满足条件执行的代码:不满足条件执行的代码
1 | switch (变量){ |
while循环
作用:在满足条件期间,重复执行某些代码
三要素:变量起始值、终止条件(没有终止条件,循环会一直执行,造成死循环)、变量变化量(用自增或者自减)
for循环
for(变量起始值;终止条件;变量变化量){}
break:退出整个循环
continue:退出此次循环继续下次循环
f12打开开发者工具或打开调试页面
进入source
选择代码文件,设置断点,然后记得刷新界面
arr.push()将一个或多个元素加到数组末尾,并返回新长度
arr.unshift将一个或多个元素加到数组开头,并返回新长度
arr.pop删除最后一个元素,返回删除的元素
arr.shift删除第一个元素,返回删除的元素
arr.splice删除指定元素
arr.splice(start,deleteCount)起始位置(从0开始计算),删除几个元素(默认删除到最后)
和变量命名基本一致
尽量小驼峰式命名法
前缀应该为动词
命名建议:常用动词约定
can判断是否可执行某个动作
has判断是否含义某个值
is判断是否为某个值
get获取某个值
set设置某个值
load加载某些数据
函数名()
function 函数名(传递的参数){}
函数名(参数)
形参:声明函数时写在函数名右边小括号里的叫形参(形式上的参数)
实参:调用函数时写在函数名右边小括号里的叫实参(实际上的参数)
形参可以理解为是在这个函数内声明的变量,实参可以理解为是给这个变量赋值
开发中尽量保持形参与实参个数一致
当其中一个变量不给值,默认为undefined
当用户不输入实参,两个变量会出现undefined+undefined,结果为NaN
我们可以改进,给形参加默认值0,使程序更严谨
在函数体中使用return关键字能将内部的执行结果交给函数外部使用
return后面代码不会再被执行,会立即结束当前函数,所以return后面的数据不要换行写
return函数可以没有return,这种情况函数默认返回值为undefined
当想返回多个值时,可以使用数组,return [a,b]
两个相同的函数后面的会覆盖前面的函数
实参的个数和形参的个数可以不一致
如果形参过多会自动填上undefined(了解即可)
如果实参过多那么多余的实参会被忽略(函数内部有一个arguments,,里面装着所有的实参)
函数一旦碰到return就不会在往下执行了函数的结束用return
通常来说,一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名
字的作用域。
增强了代码的可用性,减少名字的冲突
根据作用域不同,变量可分为局部变量(只能在当前函数内部访问和修改)和全局变量(在人和区域都可以访问和修改)
函数内部的形参可看作局部变量
函数内部没有声明却赋值的变量,可看作全局变量,但不提倡
就近原则,谁近就输出谁
let fn=function(){}
fn()
此时的变量名为函数名
具名函数的调用可以写到任何位置,但匿名函数的调用只能在声明后写
(function(){执行代码})();或者(function(){}());必须加分号,例如:(function(x,y){x+y})(1,2);
短路:只存在于&&和‖中,当满足一定条件会让右边代码不执行
&&左边为false就短路
||左边为true就短路
通过左边能得到整个式子的结果,因此没必要再判断右边
无论&&还是‖,运算结果都是最后被执行的表达式值,一般用在变量赋值