一.各类表达式
表达式的定义:编程程序的最小单位.
组成关系:表达式==>语句==>app==>应用程序
-
原始表达式
原始表达式,最原始的数据 -
数组初始化表达式
JS中的数组是存放数据的容器
数组的length是数组的最后一个元素的下标+1
部分样式
//js中的数组;放数据的容器
var arr=[100,200,300,"hello",true,undefined,null,[100,200,3000]]
console.log(arr)
//
// //取数据
var re=arr[3]
console.log(re)
var re1=arr[7][2]
console.log(re1)
稀疏数组
例:var arr=[100,,,,,12]
稀疏数组的length不真实
var arr=[100,,,,,200]
console.log(arr[2])
当取数组不存在的元素时,打印值为Undefined
!注意:
当取数组的元素下表超过了数组的最后一个元素的下标时打印值为undefined
var arr=[100,200]
console.log(arr[2])//此时打印值为undefined
- 对象的初始化表达式
var obj={name:"mata",age:18}
obj.name="chuan";//修改原数据
obj.say="我是新成员"//赋予新数据
console.log(obj);
//点语法后是字符串
存取数据:
var obj2={name:"mata"};
var re=obj2["name"];
取出数据:
1.obj["age"]=18;
2. var arr=[{xxx:"xxx"},{age:18},{name:"mata"}];
var re=arr[1].age;//取出的是对象里的数据
存数据
var k="name";
var v="mata";
var obj3={};
obj3[k]=v;
console.log(obj3)
4.获取企业级嵌套数据(读数据)
简单类型:
var person={name:"karen",age:"18",its:["css","js","html"],user:{name:"xxx"}};//一行数据
console.log(person.name)//读取姓名
console.log(person.age)//读取年龄
console.log(person.its)
console.log(person.user)
读取时分别读取
复杂类型:
读取新浪页面的数据时:
console.log(sinadata)//在浏览器console界面看数据
console.log(sinadata.statuses[7].attitudes_count)//解释:
新浪数据>statuses里的第7个元素>.attitudes_count标签的数据(使用.连接)
/*sinadata.statuses[7].biz_feature
sinadata.statuses[7].bmiddle_pic*/其他标签列举
5.函数定义表达式
- 函数声明表达式
function fn () {
console.log(6666)
console.log(777)
}
fn()//函数的调用表达式==>调用的时候,函数的大括号里面的代码就会运行一次
- 函数的定义表达
var fn1=function fm() {
}
fn1()
//函数可以要名字也可以不要
//访问函数只有通过变量名
- return返回值:函数运行到return就停止运行
例:
function fn () {
// return :return后可以写数据也可以不写;
不写数据和不写return函数一样会产生返回值--undefined
return 100 //到此停止运行
console.log(6666)//不执行
}
二.运算符,逻辑表达式
- 运算符
- ~取反再取整数部分
var num = 10.18
var re = ~~num//两次取反则不变,只取得整数部分
console.log(re)//10
- ^抑或符号
- 三目运算符
实例:
var a=20
var re=a>10?console.log(666):console.log(111);
console.log(re)//true执行冒号前部分,false执行冒号后部分
- 赋值运算符
1:=; 2:+=,-=:效果演示: var a=1; a+=1;console.log(a)//2; 3: , 运行算法,从前往后运行代码,整个表达式结果时最后一个表达式的运行结果:效果演示:var a=(20,30,40);console.log(a)//40
2.*逻辑表达式
-
!后跟数据(任何类型数据)结果是布尔值 ; !!把一个数据转化为布尔值
-
逻辑与&&(A&&B)①左右两边只要是js的表达就是正确的语法;②表达式A转化为布尔值,结果为真时整个表达式结果为B的结果,为假时为A的结果(不执行B)
eg:
var re=20*50&&a=30
var a=20;
var c=a>50&&(b=30)
console.log(a)//20
console.log(c)
console.log(b)//报错,因为A部分为假,B部分不执行
- 逻辑或||(A||B)①左右两边只要是js的表达就是正确的语法;②表达式A转化为布尔值,为真则结果为表达式A(不执行B),为假时结果为B的结果
eg:
var a=0;
var c=a||(b=30);
console.log(a,b,c);//0 30 30
- eval函数:运行字符串的代码
eg:
var str="console.log(66)"
eval(str);//66
三.语句
js语句由一个个js表达式组成,语句结尾用分号,用回车可以代替分号,一行一般写一个语句,但是一行写多个语句时,必须用分号隔开,js引擎会按照js语句的逻辑读取js的代码
- if语句:
var a=100
console.log(b)//不会报错
if(a){ //小括号的条件语句,判定为真才执行大括号的代码
var b=20
console.log(b)
}
console.log(b)
if(0) //if和else的大括号可以省略,它认为大括号里面只有一个执行语句
console.log(66)
else
console.log(111)
if语句中的复合语句:
if(){}
else if(){}
else if(){}
else if(){}
else{}
if语句中小括号中通常写一个判断表达式,如:a>=10,window.XMLHttpRequest(判断是否为新型浏览器)
- for语句
for语句应用场景:产生一系列已知数量或范围有规律变化的数据.
用于:做业务,遍历数组获取数据等场景
for循环中的嵌套为难点
for
for(A;B;C){
执行体
}
``
` 1.ABC都是语句
2.运行一次A
3.把B表达式转为布尔值
4.如果布尔值为true==>运行执行体==>运行C 回到上面3
5.如果布尔值为false==>for执行结尾大括号