学习日志 8.6

一.复习

1.回答问题的时候应该从哪些方面回答
(1).先说明答案是什么
(2).分析这道题的代码
(3).找到这道题中的考点,并且针对于考点进行作答
(4).用什么其他的方法可以达到同样的效果,通过其他什么代码能让这段代码进行优化,有哪些东西是多余的,有哪些地方容易出现bug
2.js
(1).console.log(a); var a=20; var b=100;
打印出来的答案为undefined,不会报错是因为显式变量会在js代码运行前就进行声明,但是声明不等于赋值,所以a=20这段代码没有被提前赋值.
3.会被判断为false的值
“” 0 false undefined NaN ![]
4.取消锚点自带的跳转功能的方法

<a href="javascript:void(0)">xxx</a>

二.原始表达式

  1. 原始表达式不可再分割,是最小单位的表达式;简单的概念性东西;
  2. 原始表达式包含直接量、关键字(保留字)和变量名;
  3. 表达式组成语句,语句构成app==>应用程序
  4. 常见原始表达式举例:
//直接量
1;
1.02;
'hello world!';

//保留字
true;
false;
this;

//变量名
name;
hqyj;
age;

三.数组

1.js中的数组和其他的语言中数组的不同
(1).js中的数组是用来放数据的容器,和java不同,java中的数组中装的必须是同一数据类型的数据,而在js中则不同,甚至可以var arr=[100,200,300,"hello",true,undefined,null,[100,200,3000]]
可以在数组中同时存放数字,字符串,布尔值,undefined,null,数组
(2).取数据的方法:和java类似,使用方括号加下标

var re=arr[3]

如果是数组中嵌套数组(二维数组,多维数组)

var re1=arr[7][2]

js中的数组也有length属性,是数组中最后一个元素的下标加一
2.稀疏数组

var arr=[100,,,,,12]

(1).稀疏数组的问题是他的length属性不真实,比如这个数组他里面只存了2个数据,但是他的长度是6,其中1-4号元素并没有被定义数据
(2).如果此时在控制台输出arr[2],得到的值为undefined
(3).如果读取数组的元素超过了数字的长度,得到的值为**undefined,**和java不同,java会直接报错

四.对象的初始化表达式

  1. 可以简单理解为:对象直接量;
  2. 对象初始化表达式:由花括号({})和其内用逗号(英文状态 ,)分隔开的列表构成;
  3. 初始化的结果是创建一个新的对象; 对象的属性是逗号分隔开的表达式的值; 属性包括属性名和属性值,属性名和属性值之间用冒号隔开;
  4. “对象初始化表达式”中的“元素”也可以是“对象初始化表达式”,可以任意层级嵌套;
  5. 常见对象初始化表达式举例:{name:'yourname', age:22};
  6. 读取对象的值可以使用两种方法:点阵法. 或者[ ]法
    其中点阵法为新一点的技术,功能有一定的局限性,但基本够用,而且方便,点语法后面跟着的是字符串
    eg:
var obj={name:"karen",age:18};
obj.name="jack"   ;  		 	//其中name本来是"name",但是因为点语法可以不用打引号
obj.say="我是新成员"  ;			//其中obj是没有say这个属性的,但是通过这个代码,会在obj中新建一个say属性,他的值为string类型的"我是新成员"
console.log(obj)	;			//直接在控制台打印出obj这个对象
var re=obj.name	;				//定义一个re来接收obj中name里的值
console.log(re,obj.age)	;		//打印结果
var mynameK="name";			//定义mynameK为string类型的"name"
var mynameV="karen";		//同理
var obj={};					//定义一个对象,属性和值都没有定义
obj.name="karen";			//让obj中新建一个属性name,他的值为string类型的"karen"
obj.mynameK=mynameV; 		//让obj中新建一个叫做mynameK的属性他的值为变量mynameV("karen")
obj["mynameK"]=mynameV;		// 等同于obj.mynameK(等同于上一句代码)
obj[mynameK]=mynameV;		//让obj中新建一个变量mynameK(name)的属性,值为变量mynameV("karen")
console.log(obj)			//	输出

总结:
在读写对象的数据的时候,点函数后面跟的其实就是方括号中的单词去掉引号,点函数不能让程序中的变量中的值变成对象中的属性名,只能通过.属性名来达到这个效果,容易搞混的是方括号中的引号,当不打引号则为变量,打上引号则为字符串,如果这个字符串不在已有的属性中则新建一个属性,
记忆
先以点函数为基础,点函数不能在.后加上变量,必须是一个确切的属性,然后方括号加双引号等同于点函数,如果不加双引号则为变量

var name="name1"
var obj={name1:name};		//对象的直接量==>{name1:"name1"}
obj["name1"]=obj[name]		//obj["name1"] = "name1"
console.log(obj)//"name1"

不理解:
在第三行代码中obj["name1"]=obj[name]根据上面的结论,obj[name]则为obj[“name1”],左右两边都相等,怎么会出现obj["name1"] = "name1"
数据的嵌套
可以通过一个数组把很多个对象填充进去,达到嵌套的效果,读取的时候按照对象就使用点函数或者方括号,数组就使用下标进行读取数据

五.读取数据

读取数据可以通过在企业的js文件中,让全部的代码等于一个变量,然后在打印出这个变量,这样可以在控制台中查看数据,很方便,通过点函数和读下标来实现对数据的读取

六.函数的定义表达式

函数:function
声明:

function fn () {
				console.log(6666)
				console.log(777)
			}

只需要定义,后续想调用的时候直接使用fn()进行运行大括号里面的代码

var fn1=function fm() {
				
			}
			
			fn1()

这种方法也是声明函数的一种,后续使用只需要使用变量的名字加括号就可以了
函数运行的时候必然会返回结果,函数中返回结果为return后的值,如果不写return或者return后没有跟值or表达式,则返回值为undefined
当函数运行到return时,函数立即停止运行,返回值

七.对象的创建表达式

var a=new Array();
var a= Array[100,200];

这都是创建一个对象的表达式

var a=undefined//NaN//null//true;
var re=-a;
console.log(re);		//NaN//NaN//-0//-1

八.运算符

1.按位非~
使用方法:

var num = 10.18
var re = ~~num
console.log(re)

达到将10.18的小数去掉,得到的值为10
2.按位与&和按位或|
不咋使用
3.按位异或^
在不添加第三个变量的情况下将两个变量的数据进行交换

var a=10		//10^20    (10^20)^10===>20
var b=20		//(10^20) ^ 20 ===>10
			
			a=a^b  
			b=a^b
			a=a^b
			var c=a^b//
			000000000001  //1
			000000000010 //2		
			000000000011  //3
			
			console.log(c)
			
			
			
			console.log(a)//20
			console.log(b)//10

九.逻辑表达式(重点)

1.! (非)
!后面可以跟任何数据,并且结果必为布尔值

  • 如果操作数是一个非空(null)对象,返回 false;
  • 如果操作数是一个空字符串,返回 true;
  • 如果操作数是一个非空字符串,返回 false;
  • 如果操作数是数值 0,返回 true;
  • 如果操作数是任意非 0 数值(包括 Infinity),返回 false;
  • 如果操作数是 null,返回 true;
  • 如果操作数是 NaN,返回 true;
  • 如果操作数是 undefined,返回 true。

2.逻辑与&&
和java中的&&有区别
1.左右两边只要是js的表达就是正确的语法
2.表达式A转化为布尔值,

  • 结果为真 整个表达的结果就是表达式B
  • 结果为假 整个表达式的结果是表达式A 代码不会运行B表达式
			var re=(20*50)&&(a=30);		//20*50为非0所以为ture,所以结果为表达式B re=a=30;	所以re=30
			
			var a=20;
			var c=a>50&&(b=30)
			console.log(a)			//20
			console.log(c)			//20
			console.log(b)			//报错,程序没有进行到b=30这一步,恰好这一步为隐式声明,所以不进行声明

3.||逻辑或
A||B
1.左右两边只要是js的表达就是正确的语法
2.表达式A转化为布尔值,结果
为真 整个表达的结果就是表达式A 代码不会运行B表达式
为假 整个表达式的结果是表达式B

var a=0
			var c=a||(b=30)
			console.log(a,b,c)   // 0 30 30

十.三目运算符

如java类似
eg:

var re=a>10?console.log(666):console.log(111);
console.log(re);

赋值运算符:
类似java,不做笔记
, 运算符
逗号操作符多用于声明多个变量;但除此之外,逗号操作符还可以用于赋值。在用于赋值时,逗号操作符总会返回表达式中的最后一项,如下面的例子所示:

var num = (5, 1, 4, 8, 0); // num 的值为 0

十一.eval函数

eval是一个新的函数,用于将字符串里面的数据进行运算
eg:

			var arr=[100,2302,3045,50,60]
			var str=arr.join("+")		
			console.log(str)		//"100+2302+3045+50+60"这一个字符串
			var re=eval(str)		//将这个字符串里面的数据进行运算
			console.log(re/arr.length)		//求出平均值

这段代码是最快速求出该数组的平均值的

十二.语句

什么是语句,语句就是由js来读取的代码,由分好(;)隔开
语句分为:
1.空语句
eg:

console.log(111);
			;
			;
			;
			;
			console.log(666);

其中四行代码只有一个分号组成语句,这样的代码没有什么意义,运行起来很快就走完
2.单语句
eg

var a=20;
			a=90;

这每一个分号就是一个语句,没有嵌套,一段话,一个语句所以叫单语句
3.复合语句
eg

if(20){
				console.log(66);
				console.log(111);
			};

这个if语句就是一个复合语句,其中包含了两个单语句

if语句和for语句

用法基本和java一样

if(window.XMLHttpRequest){}

判断当前浏览器是否为现代浏览器
for语句用于什么
产生一系列已知数量或者范围的 有规律变化的 数据
做遍历获取数据

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值