for 循环:
语法:
for(初始化表达式; 条件表达式; 更新表达式){
3.语句...
}
执行流程:
1.执行初始化表达式,初始化变量(初始化表达式只会执行一次)
2.执行条件表达式,判断是否执行循环:
如果为true,则执行循环3[语句]
如果为false,终止循环
4.执行更新表达式,更新表达式执行完毕继续重复2
for循环中的三个部分都可省略,也可写在外部
如果在for循环中不写任何的表达式,只写两个;
此时循环是一个死循环(慎用)
break:---可以用来退出 switch 语句或退出整个循环语句
(不能在 if 语句里不能用 break 和 continue,否则会报错)。
-break关键字 会立即终止离它最近的那个循环语句。
-可以为循环语句创建一个**label**,来标识当前的循环
(label:循环语句)。
使用 break 语句时,可以在 break 后跟着一个 label,这样 break 将会结束指定的循环,而不是最近的。
例如:
outer:
for (var i = 0; i < 5; i++) {
console.log('外层循环 i 的值:' + i);
for (var j = 0; j < 5; j++) {
break outer;
console.log('内层循环 j 的值:' + j);
}
}
continue:
-continue 可以用来跳过当次循环
-同样,continue 默认只会离它最近的循环起作用。
-同样,如果需要跳过指定的当次循环,可以使用 label 标签。
-打印出1-100之间所有的质数
console.time("test")
for (var i = 2; i <= 100; i++) {
var flag = true;
for (var j = 2; j < i; j++) {
if (i % j == 0) {
flag = false;
break;
}
}
if (flag) {
console.log(i);
}
}
console.timeEnd("test")
优化:
for (var i = 2; i <= 100; i++) {
var flag = true;
for (var j = 2; j <=Math.sqrt(i); j++) {
if (i % j == 0) {
flag = false;
break;
}
}
if (flag) {
console.log(i);
}
}
JS数据类型
-String
-Number
-Boolean
-Null
-Undefined
-Object 对象
如果使用基本类型的数据,我们所创建的变量都是独立,不能 成为一个整体
对象属于一种复合的数据类型。在对象中可以保存多个不同数据类型的属性
对象的分类:
1.内置对象:
-由ES标准中定义的对象,在任何的ES的实现中都可以使用
-比如:Object、Math、Date、String、Array、Number、Boolean、Function等。
2.宿主对象:
-由JS的运行环境提供的对象,目前来讲主要指由浏览器提供的对象。
-比如 BOM DOM。比如console、document。
3.自定义对象:
-由开发人员自己创建的对象
-通过 new 关键字创建出来的对象实例,都是属于对象类型,比如Object、Array、Date等。
在对象中保存的值称为属性
向对象添加属性
语法:
对象.属性名 = 属性值;
object.name = "张三";
console.log("obj.name");
delete obj.name;
对象的属性名不强制要求遵守标识符的规范
如果使用特殊的属性名,不能采用.的方式操作
则使用另一种方式:(灵活)
语法:
对象["属性名"] = 属性值
属性值---可以是任意类型的值,也可以是一个对象
in 运算符
-通过该运算符可以检查一个对象中是否含有指定的属性
(如果有则返回true,没有则返回false)
-语法:
”属性名" in 对象
JS中的变量都是保存到栈内中的
-基本数据类型的值直接在**栈内存**中存储
-值与值之间是独立存在,修改一个变量不会影响其他的变量
-当比较两个基本数据类型的值时,就是比较值
对象是保存到堆内存中的,每创建一个新的对象,就会在堆内存中开辟出一个新的空间
-而变量保存的是对象的内存地址(对象的引用),如果两个变量保存的是同一个对象引用,
-当一个通过一个变量修改属性时,另一个也会受到影响
-比较引用数据类型时,它是比较的对象的内存地址,
(如果两个对象是一样的,但地址不同,它也会返回false)
var obj = new Object();
var obj = {};
使用对象字面量,可以在创建对象时,直接指定对象中的属性
语法:{属性名:属性值,...}