您的位置:首页 > 产品设计 > UI/UE

JS基础值基础概念下(关系,相等,条件操作符,if,do-while,while,for,for-in,lable,break,continue,with,switvh语句)

2020-02-14 00:18 543 查看

1.关系操作符

比较符:大于(>),小于(<),大于等于(>=),小于等于(<=)

比较规则:
1.两个操作数都是数值,会进行数值的比较
2.两个都是字符串,会比较两个字符串对应的字符编码值
3.如果有一个操作数是数值,会将另外一个转换成数值,然后进行数值的比较
4.如果有一个操作数是对象,会调用valueOf()的方法按照之前的方法比较,如果没有
valueOf()方法,会调用toString()方法,按照之前的方法比较
5.如果有一个操作数是布尔值,会将其转化成数值,然后进行比较

注意:
1.比较字符串的时候,实际比较的是两个字符串对应位置的每个字符的字符编码值,经过比较会返回一个布尔值
2.大写字母的字符编码全部小于小写字母的字符编码

var result = 'Brinck' < 'alphabet' ;         //true
原因:B的字符编码是66,a的字符编码是97
如果真正安好字母表顺序比较,必须转换成相同的大小写格式
var result = 'Brinck'.toLowerCase() < 'alphabet'.toLowerCase ;         //false

3.数值的比较:

var result = '23' < ‘3’ ;        //true
因为‘2’的字符编码是50,‘3’的字符编码是51
var result = '23' < 3 ;          //false
‘23’会被转化成23
var result = 'a' < 3 ;           //false
此时a会被转换成NaN,NaN与任何数比较都是false

2.相等操作符

相等:先转换在比较
全等:仅比较不转换

1.相等和不相等

操作符:相等 ==   ; 不相等 !=
特点:
1.如果两个操作数使用相等符号而且相等,返回true,
2.如果两个操作数使用不相等符号而且不相等,返回true
3.会进行强制转换

转换规则:
1.如果有一个操作数布尔值,会将其转换成数值,fale转换成0,true转换成1
2.如果有一个操作数数字符串,另外一个是数值,会将字符串转换成数组进行比较
3.如果一个操作数是对象,另外一个不是,会调用对象的valueOf()方法,将结果按照治安规则比较
4.null和undefined相等,且两者都不能转换成其他他值
5.NaN不等于任何数,包括NaN
6.两个操作数都是对象,会比较他们是不是一个对象,如果都指向一个对象返回true

2.全等和不全等

操作符:全等 ===    不全等 !==
特点:除了比较之前不转换操作数外,其他和相等和不相等一样
var result1 = ( '55' == '55' ) ;     //true ;
var result2 = ( '55' === '55' ) ;     //true ;
var result3 = ( '55' == 55 ) ;     //true ;
var result4 = ( '55' ==  55 ) ;     //false ;
null == undefined            //true;
null === undefined           //false;

3.条件操作符

语法:     条件a ? 结果b : 结果c;
解析 :如果满足条件a,返回结果b,否则返回结果c

举例:
5 > 3 ? '5大于3' : '5小于3' ;     //结果是‘5大于3’
5 < 3 ? '5大于3' : '5小于3' ;     //结果是‘5小于3‘

4.语句

1.if语句

语法 :
if ( 条件 ){
//符合条件时执行的代码
}else{
//不符合条件时执行的代码
}

举例:
if ( a > b ) {
console.log('a大于b')
} else {
console.log('a小于b')
}

2.do-while语句

语法:
do {
// 放执行的代码
} while (
// 判断条件
)

举例:
var i = 0 ;
do {
i += 2 ;
} while( i < 10 ) ;
在这个例子中,只要i小于10,就会一直执行下去,每次递增2

注:1.do-while适合至少执行一次的情形
2.要有条件出口,否则会死循环,出现栈溢出的情况

3.while语句

语法:
while ( 条件 ) {
执行的代码
}

举例:
var i = 0 ;
while ( i < 10 ) {
i + = 2 ;
}

注:1.代码在执行前会先进行判断,符合条件执行代码,不符合不会执行
2.要有条件出口,否则会死循环,出现栈溢出的情况

4.for语句

for ( 初始条件,判断条件,改变初始条件) {
// 执行代码
}

示例:

for ( var i = 0 ; i < 10 ; i ++ ) {
console.log ( i ) ;
}
console.log ( i )             // 可在循环外部访问变量,但这里只会输出最终结果10

也可以不在for里面定义变量
var i ;
for ( i = 0 ; i < 10 ; i ++ ) {
console.log ( i ) ;
}

也可以省略三个表达式,会进入无限循环
for ( ; ; ) {

}

5.for-in语句

for ( var propName in window ) {
console.log ( propName ) ;           //将window里面的每一个属性赋值给propName,输出顺序根据浏览器不同而不同
}

注:
1.es5之前如果要迭代的变量值是null或者undefined,会报错,es5之后不在报错,会不执行循环体
2.在使用for-of 之前,要确认是否为null或者undefined
3.Safari3之前版本有一个bug,会导致某些属性值返回两次

6.label , break , continue语句

语法 : label : statement ;
描述 : 在js代码中添加标签,以便将来使用,可与break和continue使用,break,continue用于跳出循环,
但两者存在一定区别,break是终止循环,continue是跳出当前循环,进入下一个循环

var i, j;
loop1:
for (i = 0; i < 3; i++) {      //The first for statement is labeled "loop1"
loop2:
for (j = 0; j < 3; j++) {   //The second for statement is labeled "loop2"
if (i === 1 && j === 1) {
continue loop1;
}
console.log('i = ' + i + ', j = ' + j);
}
}
// Output is:
//   "i = 0, j = 0"
//   "i = 0, j = 1"
//   "i = 0, j = 2"
//   "i = 1, j = 0"
//   "i = 2, j = 0"
//   "i = 2, j = 1"
//   "i = 2, j = 2"
// Notice how it skips both "i = 1, j = 1" and "i = 1, j = 2"

var i, j;
loop1:
for (i = 0; i < 3; i++) {      //The first for statement is labeled "loop1"
loop2:
for (j = 0; j < 3; j++) {   //The second for statement is labeled "loop2"
if (i == 1 && j == 1) {
break loop1;
}
console.log("i = " + i + ", j = " + j);
}
}
// Output is:
//   "i = 0, j = 0"
//   "i = 0, j = 1"
//   "i = 0, j = 2"
//   "i = 1, j = 0"
// Notice the difference with the previous continue example

7.with语句

语法 : with(expression) statement

var qs = location.search.substring(1);
var hostName = location.hostName;
var url = location.href;
如果使用with语句的话:
with(location){
var qs = search.substring(1);
var hostName = hostName;
var url = href;
}

说明: 使用with语句关联了location对象,意味着在with语句代码块内部,每个变量首先会被认为是一个局部变量,
而如果局部变量如股票找不到变量的定义,会查询location对象中是否有同名属性,如果有,以location
对象属性的值作为变量的值

注:
1.严格模式下不能使用with,会视为语法错误
2.大量使用with语句会导致性能低下,也会给调试代码造成困难

8.switch语句

语法:
switch(expression){
case value : statement
break ;
case value : statement
break ;
default : statement
}
说明:
1.相当于执行了很多个if-else语句
2.每一个case含义:如果表达式等于这个值,则执行后面的代码
3.break用于跳出switch语句,如果没有break的话,执行完当前case,会接着执行下一个case
4.default用于表达式不匹配前面任何一种情况时执行的代码
5.可以在switch语句中使用任何数据类型
6.case的值不一定是常量,可以是变量,甚至是表达式
  • 点赞
  • 收藏
  • 分享
  • 文章举报
赵小彻 发布了6 篇原创文章 · 获赞 0 · 访问量 78 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐