JS基础(2)

// == 表示值之间进行比较 === 不仅值进行比较,也做数据类型比较

var str1 = null;

var str2 = undefined;

console.log(str1 == str2);

console.log(str1 === str2);

//定义对象

//var obj; 这样子的定义方法是不对的

var obj = null; //这样才对

加法运算符的一些注意事项

非Number型 加法运算时  先转为number型在运算

var a = null;

console.log(a + 10);//null在 number型中 为 0

任何值与NaN运算 结果为NaN

var b = NaN;

console.log(b + 10); NaN

任何值和 字符串做 加法运算时,都先转为字符串,然后和字符串做拼串

var result = 10 + "abc";

console.log(result);

result = 1 + "true";

console.log(result);

// 减号与 加号 不同,仍然转为数值运算

console.log(10 - "123");

//字符串 作 乘法 也转为 NaN

var s1 = "123";

var s2 = "abc";

console.log(s1 * s2);//NaN

//分母为0 输出无穷大 Infinit

console.log(100 / 0);

//取余运算符 %  m % n  相当于 m / n 获取余数 

//n = 0 时  返回 NaN

//m = 0 时  返回 0

//n < m 时 正常取余 8 % 3 = 2

//n > m 时 返回 m  2 % 4 = 2

//一元运算符  无非就是 加号 和 减号

// 加号 不对数值产生 任何影响  对非number型 有了 加号  先转为number 然后在运算

var bool1 = true;

var res = +bool1;

console.log(res);

var str3 = "23";

var res1 = +str3;

console.log(res1);

var str4 = "as23";

var res2 = +str4;

console.log(res2);

//  负号  转为number型  同时也可 取反

console.log(1-"2"+3);

//赋值运算符 =  遵循右结合性

//a+=1  等价于 a = a + 1

//a*=1+2  遵循右结合性

var q = 5

console.log(q*=2+3);//25

//后缀表达式 i++  先用后增

var j = 10,k = 20;

console.log(j++ + k++,j,k); // 30 11 21

//前缀表达式  ++i 先增后用

var u = 10,i = 20;

console.log(++u + ++i,u,i);//32 11 21

//逻辑运算符

//与运算符  条件A && 条件B    一假则假

//先判断A  A不成立则直接输出false

result1 = true && true;

result2 = true && false;

console.log(result1,result2);

//短路测试

true && alert("I am coming!");

false && alert("I am not coming!");

//使用注意事项

//对于非Boolean型,逻辑与会自动转换为Boolean类型来判断

//条件A如果不成立 则返回条件A的数值本身

//如果A成立, 不管B成不成立,都返回条件B数值本身

var q1 = "123" && "abc";  //返回的是什么? true吗? 不是。  abc 

console.log(q1);

q1 = "123" && 0;

console.log(q1);

q1 = null && 0;

console.log(q1); //null

//逻辑或

// 条件A || 条件B 一真则真 全为false才返回false

//只要A成立,不去看B直接返回true 

//A不成立才判断B  B成立 返回true B也不成立时返回false

//短路测试

true || alert("I am coming!");  //不执行了

false || alert("I am not coming!");  //能够执行

//使用注意事项

//对于非Boolean型,逻辑或会自动转换为Boolean类型来判断

//条件A  如果不成立 不管B成不成立,都返回条件B数值本身

//如果A成立, 则返回条件A的数值本身

var q2 = null || 0;

console.log(q2);  //  返回0

q2 = "123" || "abc";

console.log(q2);  //123

q2 = "123" || "0";

console.log(q2);  //123

//逻辑非

//!条件A  对条件取反

var bool2 = true;

var w2    = !bool2;

console.log(w2);

//注意事项

//对一个值两次取反,它不会变化

bool2 = true;

w2    = !!bool2;

console.log(w2);  //true

//对非布尔型,会先转为布尔型 然后取反

    var q3 = "123";

    var w3 = !q3;

    console.log(w3);

    //所以除了Boolean()转布尔型还可以  !!数值 这样子来转布尔型

//              关系运算符 

/**

*  > < >= <= == != === !==  且均遵循左结合性

*  == 判断值 是否相等

*  !=判断值 是否不相等

*  === 判断值和类型 是否相等

*  !==判断值和类型 是否不相等

*/

//注意事项

//对于非数值进行比较  会将其转为数值然后在比较

var e1 = "123";

console.log(e1 < 120); //false

console.log(1 > false);  //true

//如果符号两侧 均为 字符串 那么会比较的是 字符串中字符的 Unicode编码

console.log('a' > 'b');//false

console.log('abc' > 'abd');//比较方法 先比a 再比b 最后比c和d  所以结果为 false

//null undefined NaN 之间的比较

console.log(null == 0); //false

console.log(undefined == 0); //false

console.log(NaN == 0); //false

console.log(NaN == NaN);//false

//Why?

//判断这个数是否为NaN  isNaN()

var num = NaN;

console.log(isNaN(num));

console.log(null == undefined);//true

console.log(null === undefined);//false

console.log("123" == 123);//true

console.log("123" === 123);//false

//注意事项

//比较两个字符串型数字可能会得到不可预测的结果 所以比较前一定要转型呐 

//逗号运算符  将多个表达式连接起来组成一个表达式

  //a = 1 + 1,b = 3 * 4,c = 10 / 2;

  //运算过程  先算a  再算b 最后算c

  //整个逗号表达式的值是 最后一个表达式的值

  var x,y,z,v; //这个不是逗号表达式呐

  v = (x = 1 + 1,y = 3 * 4,z = 10 / 2);

    console.log(x);  //2

console.log(y);  //12

console.log(z);  //5

console.log(v);  //5


//三目运算符

//条件表达式?语句1:语句2;  一定有结果 真则执行语句1 假则执行语句2   

//条件运算符  ?和:  是一对运算符 不能单独使用

//如果条件表达式的求值结果是一个非布尔值 那么会先转为布尔值 在运算

"abc"?alert("hello"):alert("bye");  //hello

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,743评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,296评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,285评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,485评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,581评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,821评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,960评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,719评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,186评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,516评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,650评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,329评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,936评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,757评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,991评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,370评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,527评论 2 349

推荐阅读更多精彩内容