数据类型,运算符优先级,流程控制

1.JavaScript 定义了几种数据类型? 哪些是原始类型?哪些是复杂类型?原始类型和复杂类型的区别是什么?

  • 定义的数据类型有:数值、字符串、布尔、对象、undefined、null
  • 原始类型:数值、字符串、布尔
  • 复杂类型:对象
  • 区别:原始类型数据不能再细分;复杂类型,是由多个原始类型合成,可以看作一个存储各种值的容器。
    至于undefined,null一般将它们看成两个特殊值。

2.typeof和instanceof的作用和区别?

  • typeof 一般用于判断原始类型,还可以用于判断变量是否赋值.
  • instanceof一般用于判断一个变量是否为某个对象的实例。

3.如何判断一个变量是否是数字、字符串、布尔、函数

用typeof运算符进行判断数字、字符串、布尔、函数,分别返回number, string,boolean,fuction。

4.NaN是什么? 有什么特别之处?

NaN是指NOT a Number,用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了),就会返回“NaN”值。NaN 值非常特殊,因为它“不是数字”,所以任何数跟它都不相等,甚至 NaN 本身也不等于 NaN 。

5.如何把非数值转化为数值?

使用Number() 、parseInt() 、parseFloat()把非数值转化为数值

  • Number():当转换原始类型数据时,它们都能被转成数值或NaN,Number函数将字符串转为数值,要比parseInt函数严格很多。基本上,只要有一个字符无法转成数值,整个字符串就会被转为NaN;Number方法的参数是对象时,将返回NaN,除非是包含单个数值的数组。
  • parseInt() :字符串若第一个数为数值,则返回数值,返回值为第一个数值到最后一个数值,数值之间没有字母,只取整数,遇到小数点后面的数就舍弃,若第一个数为字母,则直接返回NaN;Boolean、undefined、null返回NaN;数组返回数组的第一个数值;狭义的对象、函数返回NaN。
  • parseFloat():和parseInt()类似,只是遇到小数会保留。

6.==与===有什么区别

  • ==:相等运算符,比较不同类型的数据时,相等运算符会先将数据进行类型转换,然后再用严格相等运算符比较。类型转换规则如下:
    1. 原始类型的数据会转换成数值类型再进行比较。
    2. 对象(这里指广义的对象,包括数组和函数)与原始类型的值比较时,对象转化成原始类型的值,再进行比较。
    3. undefined和null与其他类型的值比较时,结果都为false,它们互相比较时结果为true。绝大多数情况下,对象与undefined和null比较,都返回false。只有在对象转为原始值得到undefined时,才会返回true,这种情况是非常罕见的。
    4. 相等运算符隐藏的类型转换,会带来一些违反直觉的结果。
 '' == '0'           // false
0 == ''             // true
0 == '0'            // true

2 == true           // false
2 == false          // false

false == 'false'    // false
false == '0'        // true

false == undefined  // false
false == null       // false
null == undefined   // true

' \t\r\n ' == 0     // true
  • ===:严格相等运算符,它不仅比较值,而且还比较值的类型。比较规则:
    1. 如果两个值的类型不同,直接返回false;
    2. 同一类型的原始类型的值(数值、字符串、布尔值)比较时,值相同就返回true,值不同就返回false;
    3. 两个复合类型(对象、数组、函数)的数据比较时,不是比较它们的值是否相等,而是比较它们是否指向同一个对象;
    4. undefined和null与自身严格相等。

7.break与continue有什么区别

  • break:强制退出循环体,执行循环后的语句。
  • continue:退出本次循环,执行下一个循环。

注意:如果存在多重循环,不带参数的break语句和continue语句都只针对最内层循环。

8.void 0 和 undefined在使用场景上有什么区别

undefined 现常用于全局环境,不能被重写。但是在局部作用域中,还是可以被重写的。
void 是不能被重写的。 void 运算符能对给定的表达式进行求值,然后返回 undefined,最短的是void 0,所以用void 0 来表示undefined, void 0是在局部作用域中替代undefined的最佳选择,避免undefined被改写。

9.以下代码的输出结果是?为什么?

console.log(1+1);    // 2 数值类型的值相加
console.log("2"+"4"); // "24" 字符串类型变量进行拼接
console.log(2+"4");  // "24" 字符串和数值相加会把数值转换为字符串再进行拼接
console.log(+"4"); // 4  在只有一个字符串参数的时候会尝试将其转换为数字 

10. 以下代码的输出结果是?

var a = 1; 
a+++a;   // 3  ,++优先级高于 + ,先计算a++ ,1+2=3
typeof a+2; // "number2" , typeof 优先级高于 + ,先求type a ,"number" + 2 

11. 以下代码的输出结果是? 为什么

 var a = 1;
 var b = 3;
 console.log( a+++b );
结果为4 , a+++b = (a++)+b = 1+3 =4

12. 遍历数组,把数组里的打印数组每一项的平方

var arr = [3,4,5];
for(i in arr) {
  console.log(arr[i]*arr[i]);
}

13. 遍历 JSON, 打印里面的值

var obj = {
 name: 'hunger', 
 sex: 'male', 
 age: 28 
}
for (key in obj) {
  console.log(obj[key]);
}

14.

var a = 1, b = 2, c = 3;
var val = typeof a + b || c >0
console.log(val) 
// 'number2',  typeof 优先级高于'+',typeof a + b 为'number2'为true,由于运算符是||,左边true则返回左边的值'number2'

var d = 5;
var data = d ==5 && console.log('bb')
console.log(data)
// "bb", 运行 console.log("bb")时的输出;
// undefined, data的值,data = true && console.log("bb"), console.log("bb")的值为undefined, 由于运算符为&&,第一个运算子的布尔值为true,则返回第二个运算子的值,则data为undefined

var data2 = d = 0 || console.log('haha')
console.log(data2)
// "haha", 运行console.log("haha")时的输出;
// undefined, 由于运算符为||,左运算子的布尔值为false,则返回右运算子的值,则data2为undefined
 
var x = !!"Hello" + (!"world", !!"from here!!");
console.log(x)
// 2 ,  !!"Hello" + (!"world", !!"from here!!") = !!(true)+(!true,!!true)=!!true + !!true =true+ true=  2
//逗号运算符用于对两个表达式求值,并返回后一个表达式的值。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容