var a = 1;
var b = 3;
console.log( a+++b ); //首先是 a+++b 的运算: (a++)+b 。 (a++) 的运算:a 的值为 2,但 (a++) 的值为 1。 所以 (a++)+b 的运算为 1+3 ,结果为 4
遍历数组,把数组里的打印数组每一项的平方
var arr = [3,4,5];
for (i=0;i<arr.length;i+=1) {
console.log(arr[i]*arr[i]); //console.log(Math.pow(arr[i],2));
}
遍历 JSON, 打印里面的值
var obj = {
name: 'hunger',
sex: 'male',
age: 28
}
for (i in obj) {
console.log(i,":",obj[i])
}
以下代码输出结果是? 为什么 ?
var a = 1, b = 2, c = 3; //赋值
var val = typeof a + b || c >0 //"="的优先级最低,那么整体来看就是赋值。根据优先级,typeof a + b || c > 0 的运算:先进行(typeof a) + b的运算,结果为"number2";由于逻辑或的运算规则:如果第一个运算子的布尔值为 true ,则返回第一个运算子的值,且不再对第二个运算子求值;如果第一个运算子的布尔值为 false ,则返回第二个运算子的值。所以 typeof a + b || c >0 输出的结果为"number2" ;最后赋值给 val ;所以结果为"number2"。
console.log(val) // "number2"
var d = 5; //赋值
var data = d ==5 && console.log('bb') // "="优先级最低,那么整体来看就是赋值。d ==5 && console.log('bb') 的运算:由于逻辑与的运算规则:如果第一个运算子的布尔值为 true,则返回第二个运算子的值(注意是值,不是布尔值);如果第一个运算子的布尔值为 false,则直接返回第一个运算子的值,且不再对第二个运算子求值。d==5 的值为 true;console.log('bb')的值为 undefined,所以 d ==5 && console.log('bb') 的值为 undefined;最后赋值给 data;所以结果为 undefined 。
console.log(data) // undefined
JavaScript 定义了几种数据类型?
JavaScript 语言的每一个值,都属于某一种数据类型。JavaScript 的数据类型:
哪些是原始类型?哪些是复杂类型?原始类型和复杂类型的区别是什么?
原始类型(primitive type) 通常,我们将数值、字符串、布尔值称为原始类型(primitive type)的值,即它们是最基本的数据类型,不能再细分了。
复杂类型(合成类型 complex type) 将对象称为合成类型(complex type)的值,因为一个对象往往是多个原始类型的值的合成,可以看作是一个存放各种值的容器。
对象的细分
typeof
和instanceof
的作用和区别?首先,JavaScript 有三种方法,可以确定一个值到底是什么类型。
typeof 运算符
typeof运算符可以返回一个值的数据类型,可能有以下结果。
(1)原始类型
数值、字符串、布尔值分别返回
number
、string
、boolean
。(2)函数
函数返回
function
。(3)undefined
undefined
返回undefined
。利用这一点,
typeof
可以用来检查一个没有声明的变量,而不报错。上面代码中,变量
v
没有用var
命令声明,直接使用就会报错。但是,放在typeof
后面,就不报错了,而是返回undefined
。实际编程中,这个特点通常用在判断语句。
(4)其他
除此以外,其他情况都返回
object
。那么这里就有个问题了,既然
typeof
对数组(array
)和对象(object
)的显示结果都是object
,那么怎么区分它们呢?instanceof
运算符可以做到。instanceof 运算符
区分数组和对象
如何判断一个变量是否是数字、字符串、布尔、函数
typeof
来判断eg:
NaN 是什么? 有什么特别之处?
如何把非数值转化为数值?
有三个函数可以把非数值转换为数值
Number
函数(强制转换),可以将任意类型的值转化成数值。Number
函数将字符串转为数值,要比parseInt
函数严格很多。基本上,只要有一个字符无法转成数值,整个字符串就会被转为NaN
。parseInt
方法用于将字符串转为整数。parseFloat
方法用于将一个字符串转为浮点数。==与===有什么区别
==
近似相等,会将两边的值,转换成同一数据类型,再比较。===
是严格意义上的相等,不会转换数据类型,数据类型不一样,会直接返回false
。(实际工作中尽量使用===
)break
与continue
有什么区别break
用于强制退出循环体,执行循环后面的语句continue
用于退出本次循环,继续执行下次循环void 0
和undefined
在使用场景上有什么区别undefined
可以在局部作用域中被覆写,而void
运算返回都是undefined
。以下代码的输出结果是?为什么?
以下代码的输出结果是?
以下代码的输出结果是? 为什么?
遍历数组,把数组里的打印数组每一项的平方
遍历 JSON, 打印里面的值
以下代码输出结果是? 为什么 ?
取反运算符形式上是一个感叹号,用于将布尔值变为相反值,即 true 变成 false,false 变成 true。 对于非布尔值的数据,取反运算符会自动将其转为布尔值。规则是,以下六个值取反后为 true,其他值取反后都为 false 。