我的JavaScript回顾之路_01—0206—++在前在后区别/&&和||/条件判断语句/循环语句的区别/字符串类型数字和数字类型之间的转换
2018-02-06 20:53
1066 查看
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script> var a = 10, b = 10; console.log(a++ + a, ++b + b) var sumi = 0; var sumj = 0; for(let i = 0; i <= 100; i++) { sumi += i; } console.log(sumi) for(let j = 0; j <= 100; ++j) { sumj += j; } console.log(sumj) document.write("<h1>123</h1><br><span>456</span><br>") var c = 100, d = "1234", e = 200; document.write(e + "" + "<br>"); ee = e + ''; f = ee + a; console.log(f) cc = c.toString(); document.write(cc + d*1) var array = [1, 2, 3, 4, 5] array.desc = "six"; for(let i = 0; i < array.length; i++) { console.log(array[i], i, array, array.length) } //forEach es5遍历数组,而不是遍历对象 index数组下标 value对应下表的值 不能中断循环(使用语句) //$.each([], function(index, value, array) { // ... }); array.forEach((value, index, array) => { console.log(value, index, array, array.length) }) //for in循环遍历对象的key,键值对中key值 for(var index in array){ console.log(index, array[index], array, array.length) } //for of es6循环遍历对象的value值,键值对中value值 可以正确响应break、continue和return语句 for(let value of array){ console.log(value, array, array.length) } document.write("<br>"); //for of 用法 let iterable = "boo"; for (let value of iterable) { document.write(value); }//boo document.write("<br>"); let iterableb = new Uint8Array([0x00, 0xff]); for (let value of iterableb) { document.write(value+',') }//0 255 document.write("<br>"); let iterablec = new Map([["a", 1], ["b", 2], ["c", 3]]); for (let [key, value] of iterablec) { document.write(key + '-->' + value + "<br>"); } document.write("<br>"); for (let entry of iterablec) { document.write(entry + "<br>"); } let iterabled = new Set([1, 1, 2, 2, 3, 3]); for (let value of iterabled) { document.write(value + ','); } //总结 var a = ['A', 'B', 'C']; var s = new Set(['A', 'B', 'C']); var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]); for (var x of a) { // 遍历Array console.log(x);//'A', 'B', 'C' } for (var x of s) { // 遍历Set console.log(x);//'A', 'B', 'C' } console.log(s.add('D')); for (var x of m) { // 遍历Map console.log(x[0] + '=' + x[1]);//1='x',2='y',3='z' } var dd = new Map([['userId', 1],['title', "电脑"], ['dec', "很好用"], ['price', 33], ["price", 30]]) console.log(dd) dd.set('aa', 5);//添加新的key-value console.log(dd) console.log(dd.has('adm'));//是否存在key"adm" console.log(dd.get('aa'));//获取key为aa的value值 console.log(dd.delete('aa'));//删除key值为aa的健值对 console.log(dd) for(let i of dd) { console.log(i[0]+i[1])//key值相同取后一个的value值 } dd.clear(); console.log(dd) //Set与Array类似,但Set没有索引,因此回调函数的前两个参数都是元素本身: var s = new Set(['A', 'B', 'C', 'C']); s.forEach(function (element, sameElement, set) { console.log(element, sameElement, set); }); //Map的回调函数参数依次为value、key和map本身: var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]); m.forEach(function (value, key, map) { console.log(value, key, map); }); </script> </body> </html>
1、++在前在后区别
var a = 10, b = 10;
console.log(a++ + a, ++b + b)
//a输出21,b输出22
2、条件判断&&和||
&&:两边同时为true则为true,否则为false。
||: 一边为true则为true,否则为false。
3、条件判断语句if else、三目运算符和switch开关
if(){}else if(){}else{}
var a = 1, b = 2; a > b ? alert(a) : alert(b);
var a = 0; switch(a){case 0: alert(1); break; ... default:break;}
4、循环while、do while和for
for用的比较多,知道循环次数(i/j/k/l/o/p)
for(var
i = 0; i <= 100; i++){}//每次循环最后执行的是i++
while不知道循环次数
while(条件判断){}
do while比较少用,先执行一次循环再判断条件是否成立
var
i = 0, sum = 0; do{sum += i; i++}while( i < 0); console.log(i, sum) //i输出1,sum输出0
扩展知识:
1.window.history事件
history.back()和history.forward()分别表示向后一页和向前一页。
history.go(num)表示向前或向后翻多少页,num为正数表示向前翻,为负数则向后翻。
History.back()等价于history.go(-1),history.forward()等价于history.go(1)。
执行这三个中的任一方法,触发浏览器的popstate事件,如果只是hash部分发生变化,还可能同时触发hashchange事件。
history.replaceState(stateData, title, url)
使用pushState()的好处:只改URL的hash部分,window.location使用的是同一个document。
单纯调用pushState()或replaceState()不触发popstate事件。
参数URL必须和当前URL同源,否则会报错。
2.输出标签:document.write("<h1>123</h1><br><span>456</span>")
3.数字类型和字符串类型的相互转换:
数字类型两个数字类型的变量拼接var a = 100, b = 200; document.write(a + '' + b)//输出100200
字符串类型数字转换成数字类型var a = 100, c = "1234"; document.write(a + c*1)//输出1334
数字类型 --> 字符串类型
法1:toString方法 变量名.toString() //toString()还能执行进制转换
法2:数字类型
+ ""
字符串类型 --> 数字类型
法1:parseInt() 函数可解析一个字符串,并返回一个整数 //(parseFloat()只会返回小数)
法2:字符串前加" + "
法3:字符串后*1
其他:String.split(分隔符, 数量)把一个字符串分割成字符串数组(数量可不写)string-->array
Array.join(分隔符)把数组中的所有元素放入一个字符串
array-->string
4.forEach、for
in和for of的区别
var
array = [1, 2, 3, 4, 5]
array.desc = "six";
//for 循环遍历数组
for(let i = 0; i < array.length; i++)
{
console.log(array[i], i, array, array.length)
}
//forEach es5遍历数组,而不是遍历对象。index数组下标 value对应下表的值 不能中断循环(使用语句)
//$.each([], function(index, value, array) { // ... });与forEach相似
array.forEach((value, index, array) => {
console.log(value, index, array, array.length)
})
//for in循环遍历对象的key,键值对中key值
for(var index in array){
console.log(index, array[index], array, array.length)
}
//for of es6循环遍历对象的value值,键值对中value值,弥补forEach和for-in循环的短板
for(let invalue of array){
console.log(value, array, array.length)
}
for of具体用法详见html
5.new Set([1, 2, ...])和new Map([[], [], ...])
new
Set([1, 2, ...])
es6提供了新的数据结构Set,类似于数组,但成员的值都是唯一的,没有重复的值。
可以接受一个数组(或类似数组的对象)作为参数,用来初始化。
let iterable = new Set([1, 1, 2, 2, 3, 3]);
for (let value of iterable) {
document.write(value + ',');//1,2,3,
}
四个操作方法:
add(value):添加某个值,返回Set结构本身。
delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
has(value):返回一个布尔值,表示该值是否为
Set的成员。
clear():清除所有成员,没有返回值
new
Map([[], [], ...])
四个操作方法:
set(value):添加新的key-value。
delete(value):删除健值对,返回一个布尔值,表示删除是否成功。
has(value):返回一个布尔值,表示该值是否为
map的成员。
clear():清除所有成员,没有返回值
get():获取对应key的value值
var dd = new Map([['userId', 1],['title', "电脑"], ['dec', "很好用"], ['price',
33], ["price", 30]])
console.log(dd)
dd.set('aa', 5);//添加新的key-value
console.log(dd)
console.log(dd.has('adm'));//是否存在key"adm",存在为true
console.log(dd.get('aa'));//获取key为aa的value值
console.log(dd.delete('aa'));//删除key值为aa的健值对
console.log(dd)
for(let i of dd)
{
console.log(i[0]+i[1])//key值相同取后一个的value值
}
dd.clear(); console.log(dd)
注意:
//Set与Array类似,但Set没有索引,因此回调函数的前两个参数都是元素本身:
var s = new Set(['A', 'B', 'C', 'C']);
s.forEach(function (element, sameElement, set) {
console.log(element, sameElement, set);
});
//Map的回调函数参数依次为value、key和map本身:
var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
m.forEach(function (value, key, map) {
console.log(value, key, map);
});
6.map定义和方法
map()方法返回一个新数组,数组中的元素为原始数组元素调用函数处理的后值。
map()方法按照原始数组元素顺序依次处理元素。
map不会对空数组进行检测,不会改变原始数组
arr.map(function(currentValue,index,arr),thisValue)
本博客所整理的文章只为便于本人记忆,随时欢迎指出错误,望勿喷。谢谢!
相关文章推荐
- 无法确定条件表达式的类型,因为“<null>”和“int”之间没有隐式转换
- 条件判断 & 循环语句的逆向
- 判断C#中的字符串是否是数字,如果是转换成int类型
- Python教程学习简记1--Python数据类型和变量 字符串和编码 list和tuple 条件判断 循环 dict和set
- SQL插入语句中有单引号 && SQL中char nchar varchar nvarchar的区别 && Java中字符(串)和数值类型的转换
- 字符串内特殊字符在html_javascript_xml等内使用时的转换 ,"缺少十六进制数字"错误的处理
- JavaScript 特有奇葩问题“字符串类型与数字类型混乱”的分析与解决,与类型转换
- for(foo('A');foo('B')&&(i<2);foo('C')) ,其实考的就是for (初始化语句; 判断条件; 循环条件)
- 数字与字符串之间的转换以及%f与%lf的输入输出用法区别
- javascript基础:字符串自动转换为数字类型
- 这是网友发的一道很常见的面试题, for(foo('A');foo('B')&&(i<2);foo('C')) ,其实考的就是for (初始化语句; 判断条件; 循环条件) ,现在详细解析一下!
- Android 获取当前系统时间 时间之间的转换 判断字符串是否日日期类型
- 判断C#中的字符串是否是数字,如果是转换成int类型
- C++字符串类型和数字之间的转换
- 笔试:使用fprintf和sscanf 判断IP字符串的正确性和数字IP之间的转换
- 条件判断 & 循环语句的逆向
- JavaScript中关于parseInt(),Number(),parseFloat()以及一元运算符“+”将字符串类型转换为数字类型的对比
- stackoverflow | C/C++ | 如何不使用循环和判断语句实现“打印从1到100之间的数字”
- 初始化语句;&nbsp;判断条件;&nbsp;循环条件
- 这是网友发的一道很常见的面试题, for(foo('A');foo('B')&&(i<2);foo('C')) ,其实考的就是for (初始化语句; 判断条件; 循环条件) ,现在详细解析一下!