一、基本语法(数量,数据类型和运算符)
1.变量:指的是在数据中心保存数据的容器
变量是计算机内存中存储数据的标识符,根据变量名称可以获取到内存中存储的数据
也就是说,我们向内存中存储了一个数据,然后要给这个数据起一个名字,为了是我们以后再次找到他
变量的本质是内存中一个存储单元
语法:var变量名=值
1.定义变量及赋值
注意:
1.一个变量名只能存储一个值
2.当在次给一个变量赋值的时候,前面那一次的值就会被覆盖
3.变量名区分大小写(JS区分大小写)
2.变量的命名规则及规范
1.规则:
1.一个变量名可以有数字,字母 ,英文下划线(_),美元符号$ 组成
2.严格区分大小写
3.不能由数字开头,不要使用中文汉字命名
4.不能是保留字或关键字
5.不能出现空格
2.规范
1.变量名尽量有意义(语义化)
2.遵循驼峰命名(由多个单词命名时,从第二个单词开始,首字母大写)
3.访问变量值
控制台输出语句 :console.log("输出内容") 引号中的内容被打印在控制窗口
console.log("变量名") 引号中的变量值被打印在控制窗口
2.数据类型
- 是指我们存储在内存单元中值的类型
- 我们通常分为两大类 基本数据类型 和 复杂数据类型
1.基本数据类型
1.数值型(number)
a.一切数字都是数值类型(包括二进制,十进制,十六进制等)eg:1 2 3 3.5等
b.NaN(not a number)一个非数字
2.字符串类型(string)
被引号所包裹的任何内容(" number" ' rose' `23`)
3.布尔类型(boolean)
它的值只有两个true和false
4.null类型(null)
只有一个,就是null,表示空的意思
5.undefined类型(undefined)
只有一个,就是undefined,表示没有值
2.判断数据类型
利用typeof关键字来对存储的关键字进行判断是什么类型的
isNaN(x)函数用于检查其参数x是否是非数字值,是非数字值返回true,否则返回false
提示:isNaN() 函数通常用于检测 parseFloat() 和 parseInt() 的结果,以判断它们表示的是否是合法的数字。
当然也可以用 isNaN() 函数来检测算数错误,比如用 0 作除数的情况。
3.数据类型的转换
数据类型之间的转换,比如数字转成字符串,字符串转成布尔,布尔转成数字等
1.Number(变量)
a. 可以把一个变量强制转换成数值类型
b.可以转换成小数,会保留小数
c.可以转换成布尔值
d.遇到不可转换的都会返回NaN
2.parseInt(变量)
从第一位开始检查,是数字就转换,知道一个不是数字的内容
开头就不是数字,就返回NaN
不认识小数点,只能保留整数
3.parseInt(变量)
从第一位开始检查,是数字就转换,知道一个不是数字的内容
开头就不是数字,就返回NaN
认识小数点
4.除了加法以外的数学运算
运算符两边都是可运算的数字才行
如果运算符任何一遍不是可运算的数字,就会返回NaN
加法不可以用
4.运算符
就是在代码里面进行运算的时候使用的符号,
不光只是数学运算,我们在 js 里面还有很多的运算方式
数学运算符
二、逻辑分支语句、IF 条件分支结构、SWITCH 条件分支结构、三元运算(扩展)等
一、程序:是由一条条语句构成
程序=程序语句+数据结构+算法
程序语句:
var num//变量声明语句
num=100 //赋值语句
connsole.log(num)//控制台语句
alert("helloword")//弹框语句(函数调用语句)
程序执行从上往下依次执行
1. 逻辑分支语句:
1. if语句
语法
if(条件表达式){ 可以有多条语句
var num//变量声明语句
num=100 //赋值语句
connsole.log(num)//控制台语句
alert("helloword")//弹框语句(函数调用语句)
} // 判断()中的条件是否成立
2. if-else语句:
if(条件表达式){
语句块1
}else{
语句块2
}
3. if-else if-else语句:
if(条件表达式1){
语句块1
}else if(条件表达式2) {
语句块2
}
4. if语句的嵌套
if(条件表达式){
语句块
if(条件){
}
}
2.多分支语句
switch多分支语句
语法:
switch(表达式的值){
case 值1:
语句块1
[break]
case 值2:
语句块2
[break]
case 值3:
语句块3
[break]
default:
语句块
}
switch多分支语句的穿透
语法:
switch(表达式的值){
case 值1:
语句块1
case 值2:
语句块2
case 值3:
语句块3
default:
语句块
}
3.三目运算
1.两个符号组成的语句
2.if-else语句
if(条件){
语句块1
}else if{
语句块2
}
条件 ?语句1(条件为true执行) :语句2(条件为false执行)
三、程序的三种结构、循环语句(while 、do-while 、for)及跳转语句(break与countinue的区别 )计数器和break与continue的连用、document.write()等
一、循环结构
1.while循环
while语法:
while(条件表达式){
//循环体->循环体执行的语句块
}
if(条件表达式){
//语句块
}
注:循环体要有改变条件的语句,否则就成为死循环
循环三要素:
1.初始化条件
while(2.条件){
循环体
3.改变条件语句
}
2. do-while循环
语法:
do{
//循环体
}while(条件表达式);
3.for循环
语法:
for(初始化;条件;改变条件的语句;){
循环体
}
三、拓展
1.跳转语句(break与countinue的区别 )
break与循环语句一起使用
作用:结束循环
switch(表达式){
case 值1:
break;
}
continue语句
结束本次循环,continue后面的代码不执行。 继续下一次循环。
2.计数器和break与continue的连用
例子:打印100-200内能被6整除的前3个数
分析: 1. 100-200内数
2. 被6整除
3. 前3个数
<script>var count=0for(var i=100;i<=200;i++){if(i%6===0){console.log(i)count++}if(count===3){break}}</script>
3.document.write()的使用方法
document.write() 打印输出内容到页面上,多个输出不能换行
<script>document.write("heellworld")//显示内容到页面document.write("<br>")//换行document.write("javascript")//多条语句输出不换行</script>
4.双重for循环的运用
<script>for(var i=1;i<=2;i++){for(var j=1;j<=3;j++){console.log("i:",i,"j:",j)}}</script>
5.累加算法
四、JavaScript的函数、函数的封装(有参、无参、有无返回值的基本用法)、预解析
一、函数
作用 :对任意代码进行“封装”,在需要的时候进行调用
=>像一个盒子,盒子里面转代码,通过盒子名称找到盒子执行里面的代码
1.盒子封装代码
2.调用盒子执行代码
语法:
//定义函数
function 函数名(){
封装代码
}
函数名() // 函数调用语句
二、函数的参数
function 函数名(m){ m为实参
函数体
}
函数名(100) 100为形参
1.形参:定义函数时,在函数名括号中定义的变量称为形参
2.实参:使用函数调用语句,调用函数时,传入的实际参数值
参数个数
function 函数名(m,n){
函数体
}
函数名(100,200)
参数个数不匹配
1.形参个数多于实参
2.实参个数多于形参
1.函数参数的封装
<script>// 封装 求两个数最大值54,67的函数//定义名为getMax的函数function getMax() {var m = 54var n = 67var max = mif (n > max) {max = n}console.log("最大值是", max)}getMax()// 封装 求两个数最大值54,67的函数//定义名为getMax的函数function getMax(x,z) {var m = xvar n = zvar max = mif (n > max) {max = n}console.log("最大值是", max)}getMax(54,67)getMax(72,85)
2.函数返回值return的运用
return 语句
作用:在函数体中,终止函数整体代码向下执行,返回函数调用处
return 值
3. 函数类型
根据函数参数和返回值,分为四类
1.无参无返回值
function fun(){
}
fun()
2.有参无返回值
function fun(m){
}
fun(100)
3.无参有返回值
function fun(){
return 100
}
var m = fun()
4.有参有返回值
function fun(m){
return 100
}
var m=fun(100)
4.函数参数的默认值
<script>function fun(m) {m = m || 10 //m无值就为undefined是falseconsole.log("m", m)}fun() //fun()中无值默认为10,有值就输出定义的那个值</script>
5.函数的定义方式
1.声明式定义函数
function 函数名(){
}
2.函数表达式()
<script>var getMax=function(m,n){var max=mif(n>max){max=n}return max}var m1=getMax(34,56) //定义变量接收console.log("最小值:",m1)</script>
二、预解析
1.预解析
=> 浏览器Javascript引擎解析执行JavaScript代码
执行JavaScript代码之前,扫描通读js代码,如果返现声明式韩式和var声明的变量,执行提前
JavaScript源代码 ->执行
|
预解析
1.声明式函数提前
2.var声明变量提前
2.函数名和变量同名:
1.声明式函数优先(考试和面试出现)
2.一定避免函数名和变量名同名
五、JavaScript函数的作用域、变量使用规则、作用域链、递归函数以及简单的了解对象,数组的运用
一、作用域
1. 声明变量起作用的范围
1.全局作用域:整个js全局作用
2.局部作用域:在函数体中作用范围
内层可以访问外层作用域变量
外层不能访问内层作用域变量
2.作用域访问规则:如下例子
<script>var num = 100function fun1(){var num1=200console.log("fun1 num",num)function fun2(){var num2=300console.log("fun2 num",num)//如果上级的作用域没有,接着向上找,直到全局作用域console.log("fun1 num",num1)//如果当前作用域没有找到,到上级作用域找console.log("fun2 num",num2)//当前作用域找访问的变量console.log(num3);//全局作用域都没找到报错:Uncaught ReferenceError: num1 is not defined}}</script>
3.作用域的赋值规则:如下例子
<script>var num = 100function fun1() {var num1 = 200// console.log("fun1 num",num)function fun2() {var num2 = 300//赋值前在当前作用域查找num1 = 400//上级作用域查找,找到赋值num = 500//上级作用域查找,直到全局作用域num3 = 600//上级作用域查找,全局作用域查找,全局作用域也没有查找到,将自动创建全局变量,然后赋值}}</script>
作用域链:(重点)
变量访问或赋值时,
先在自己的作用域查找,
如果没找到,再一层一层向上查找,至到最外层全局作用域。
这种层层查找关系,叫作用域链
二、递归函数
递归函数:
函数自身调用自身,这样的函数成为递归函数
注意:
1. 要有递归结束的条件
2.改变递归的条件的代码
<script>// 1+2+3的和function f(n) {// 结束条件if (n == 1) {return 1}return f(n - 1) + n}var sum = f(3)console.log("前三项和为:",sum)</script>
三、对象
一、理解对象
=>面向对象
=>现实生活中对象
具体一个事物
张三同学
对象有自己的特征行为
=> 软件世界
对象 Object
属性 方法
属性名 属性值
二、创建对象
var jackObj={}//创建空对象
var jackObj={ //{属性:"属性值"}
name:"jack", //姓名属性=>name 属性名和jack属性构成
age:18, //年龄属性=>age 属性名和18属性构成
}
三、 数据类型
var num=100//number
var name="lucy" //string
复杂数据类型
var obj={name:"jack",age:18}
四、创建对象new语句
字面量方式
var obj={
name:"jack"
age:18
}
构造函数方式
var obj=new Object()//空对象
obj.name="jack"
obj.age=18
五、遍历对象 for-in
<script>// 1.创建对象var obj = {name: "jack",age: 18,sex: "男"}// 2.访问对象给定的属性值console.log("name:", obj.name)console.log("age:", obj.age)console.log("sex:", obj.sex)//3. 修改属性值obj.name = "rose"console.log("name:", obj.name)console.log(obj)//4. 删除属性值delete obj.nameconsole.log(obj)// 5.添加属性obj.score = 98console.log(obj)// 6.遍历对象 for-infor (var key in obj) {//第一次遍历key是nameconsole.log("key",key,"value",obj[key])}// 7.访问属性值,属性名是变量console.log("name", obj.name)var _name = "name"console.log(obj[_name])console.log(obj["name"])</script>
复杂数据类型
Object
var obj={
name="jack",
age:18
}
key/value->键/值对的组合
数组 Array
数组
1. 作用:存储一系列有序数据的集合
2.创建数组
var arr=[] //创建空数组
var arr=[1,2,"jack",true]
3.索引号(下标)
4.访问数组元素
arr[]
数组名[索引号]
5.数组长度(元素个数)
length属性
arr.length
6.遍历数组
for
7.创建数组方式
构造函数
var arr=new Array() 空数组
字面量
var arr=[]空数组