JavaScript 定义了几种数据类型? 哪些是原始类型?哪些是复杂类型?原始类型和复杂类型的区别是什么?
- ** JavaScript有六种数据类型 **
- 1.数值(number):整数和小数(比如1、3.14)
- 2.字符串(string):字符组成的文本(比如“ hello apple ")
- 3.布尔值(boolean):"ture" 和"false"两个特定值
- 4.undefined:表示未定义或不存在,此处目前没有任何值
- 5.null:表示空缺,即此处应该有一个值,但目前空缺
- 6.对象(object):各种值组成的集合
- ** 数值、字符串、布尔值 **为原始类型,他们是最基本的数据类型不能再细分了。
- **对象(object) **为复杂类型,复杂类型一般由多个原始类型的数据组成,可以看作是存放各种值的容器。
- 对象又可以分为三个子类型
狭义的对象(object)
数组(array)
函数(fuction)
正则表达式(regexp) - **undefined、null **为两个特殊值。
typeof和instanceof的作用和区别?
- tyoeof运算符可以返回一个值的类型:
原始类型数值、字符串、布尔值分别返回number、string、boolean
函数返回function
function f( ) { } typeof f //"fuction"
typeof可以用来检查一个没有声明的变量,而不报错。
除此以外,其他情况都返回object。 - instance 是用于判断某个对象是不是构造函数的一个实例
区分数组和对象
var o = {}; var a = []; o instanceof Array // false a instanceof Array // true
instanceof返回一个布尔值,该值指示一个对象是否为特定类的一个实例
result = object instanceof class
如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 class 存在于对象的原型链中(为 true),则该运算符返回 true。如果 object 不是 class 的实例,或 object 为 null,则该运算符返回 false。
如何判断一个变量是否是数字、字符串、布尔、函数
typeof 123 === 'number'
判断是否是数字
typeof '123' === 'string'
判断是否为字符串
typeof true ==='boolean'
判断是否为布尔
typeof a ==='function'
判断是否为函数
NaN是什么? 有什么特别之处?
NaN含义是Not a Number,表示非数字,NaN和任何值都不想等包括它自己。
如何把非数值转化为数值?
Number( )
- 2.
parseLnt( ) parseFloat( )
(1)忽略字符串前面的空白字符,找到第一个非空白字符
(2)如果第一个字符不是-或者数字返回NaN
(3)如果是继续解析,直到非数值模式为止
(4)0开头会当做八进制,0x开头会当做十六进制,但是可以第二个参数指定基数
==与===有什么区别
- ==是值相等,js会在一些情况下进行隐式的类型转换后再进行比较;
- ===是严格相等,不会转换数据类型;
break与continue有什么区别
- break 用于强制退出循环体,执行循环后面的语句;
- continue 用于退出本次循环,执行下次循环;
void 0 和 undefined在使用场景上有什么区别
- void 0 在任何场景下返回值都是underfind;
- underfind 在局部作用域中会被覆写;
以下代码的输出结果是?为什么?
以下代码的输出结果是?
以下代码的输出结果是?
遍历数组,把数组里的打印数组每一项的平方
var arr = [3,4,5]
for(var i =0 ;i<arr.length; i++){
console.log(arr[i] * arr[i]) }
遍历 JSON, 打印里面的值
var obj = {
name: 'hunger',
sex: 'male',
age: 28
}
for(var key in obj){
console.log(obj,key+":"+obj[key]}
//输出 name: 'hunger',
sex: 'male',
age: 28
以下代码输出结果是? 为什么 (选做题目)
var a = 1, b = 2, c = 3;
var val = typeof a + b || c >0;
console.log(val); //结果为number2。val值为"number2",只要“||”前面为 true,无论“||”后面是true还是false,结果都返回“||”前面的值。
var d = 5;
var data = d ==5 && console.log('bb');
console.log(data);//结果为bb,data值为bb,只要“&&”前面是false,无 论“&&”后面是true还是false,结果都将返“&&”前面的值。
var data2 = d = 0 || console.log('haha');
console.log(data2);//结果为haha,只要“||”前面为false,无论“||”后面是 true还是false,结果都返回“||”后面的值。
var x = !!"Hello" + (!"world", !!"from here!!");
console.log(x);//结果为2,空字符串为false,非空则为true,var x = true+(false+true),true为1,1+1=2。