(声明:仅仅为博主的学习记录整理)
2018/8/15 杂乱整理
break和continue:
break可以用来退出switch或循环语句。
不能在if语句中使用break和continue。
但是注意以下情况,这种事跳出for循环而不是if,搞清楚。
for(var x=1 ; x<4 ; x++){
document.write(x); //输出:12
if(i==3){
break; //在i=2时跳出for循环
}
}
/*但是若用continue放在break的位置,仅仅是跳过2这个结果,循环仍旧继*/
其中,虽然break和continue都是找最近的循环,但是他们也可以选择循环进行跳出。
这个就扯到label语句了,他可以让两个语句返回代码中特定的位置。
其用于嵌套循环,目的是减少循环次数。
我们来看例子。
//labelname: 循环语句
out: //外循环的名字 (labelname)
for(var x=1;x<10;x++){ //循环语句
document.write(x);
for(var y=1;y<3;x++){
if(y=2){
break out; //这个时候break这一跳就全跳出去了
} //因为break跳的是out这个外循环
} //continue同理
}
开根号了解一下:
/*开根号的问题*/
Math.sqrt(); //用于开平方根的
Math.sqrt(4); // 2
Math.pow(27, 3); //意思是求27的三次方 就是27*27*27的意思
//由此我们可以得出
Math.pow(27,1/3); //即 根号3下的27
对象(object):
基本数据类型:五个
String,Number,Boolean,Null,Undefined(对就这五个)
剩下的都是他了 ——> Object
基本数据类型都是单一的值,”hellp” 123 true
值之间没有任何的联系
对象的分类:
1.内建对象
由ES标准中定义的对象,在任何ES的实现中都可以使用
eg,Math String Number Boolean Function Object
2.宿主对象
由JS的运行环境提供的对象,目前主要是指由浏览器提供的对象
比如BOM,DOM
3.自定义对象
由开发人员自己创建的对象
对象属于一种符合的数据类型
创建对象:
1.使用new关键字调用的函数,是构造函数construction
2.构造函数是专门用来创建对象的函数
3.使用typeof检查一个对象时,会返回object
/*
*在对象中保存的值为属性
*向对象添加属性
*语法: 对象.属性名=属性值
*/
var obj = new Object()
obj.name = "bobby";
obj.gender = "man";
obj.age = "21";
console.log(obj);
/*控制台输出:
*Object{name="bobby",gender="man",age="21"}
*/
读取对象中没有的属性,不会报错而是会返回undefined
删除对象属性:
delete 对象.属性名
属性名和属性值:
属性名:
-对象的属性名不强制要求遵守标识符的规范
-但是使用时尽量按照标识符的规范去做
-如果要使用特殊属性名,不能用.的方式来操作
需要使用另一种方式
语法: 对象[“属性名”] = 属性值
读取时也得采用这个方式
中括号中可以使用变量
in 运算符
-通过该运算符可以检查一个对象中是否有指定属性
语法:
“属性名” in 对象
基本和引用数据类型:
JS中的变量都是保存到栈内存中的
基本数据类型的值直接在栈内存中储存
值与值之间是独立保存的
对象时保存到堆内存中的,每创建一个对象,就会在堆内存中开辟出一个新的空间
而变量保存的是对象的内存地址(对象的引用)
var obj = new Object();
obj.name = s;
var obj2 = obj
obj.name = z;
堆内存中的name改变则输出时,obj2这边也跟着变
栈内存 | |
---|---|
obj | 0x123(指向下面的那个空间) |
obj2 | 0x123(指向下面的那个空间) |
堆内存 |
---|
0x123 |
注意引用数据类型对比的是地址,基本数据类型比值
var obj = new Object();
//两者相同
var obj = {};
//可以直接在创建对象时,直接指定对象中的属性
var obj2 = {
name:"you",
age:20,
gender:"girl"
};