JS学习-基础部分

类型转换

显示类型转换

javascript的数据类型包括:

(1)基本数据类型:number、string、boolean、null、undefined

(2)对象:object

object又包括Function、Array、Date、ExgReg等

javascript的隐式类型转换,是相对于显示类型转换来说的。

明确的将某种类型转换成另一种类型称为显示转换,相反则称为隐式类型转换。

显示类型转换的方法Number()、Boolean()、String()、toString() 等

隐式类型转换包括运算、语句等
学习文章:javascript 隐式类型转换

Number是整体转换–能够把一个看起来像数字的字符串转成数字–尽量去转换能转的都转了

var a = "+100";
console.log( a+100 ); // "+100100"
console.log(Number(a)); // 100  
var a1 = "";
console.log( Number(a1) ); // 0
var a2 = true;
console.log( Number(a2) ); //true -> 1  false -> 0
var a3 = []; //[""]  [123]  ["123"] [1,2,3]
console.log( Number(a3) ); // 0  0  123  123  NaN
var a4 = null;
console.log( Number(a4) ); // 0

parseInt从左到右一个一个转换,碰到非数字的东西就不转了 只能转像->字符串 前面符号/空格也是认的

var b = "100px"; // "-100" "00100" "10.6"
console.log( parseInt(b) ); // 100  -100  100  10
console.log( parseInt(b,10) ); // b,10 是按进制转换--默认是10进制

parseFloat可以转换小数

var c = "12.34元"; // "12.3.4"
console.log( parseFloat(c) ); // 12.34  12.3

tips:

  1. 所有类型的值与字符串的值相加都会被转换成字符串
  2. a++是先执行语句,再自增,++a是先自增再执行语句
  3. 字符串的比较大小,比较的是asc码
  4. var a = NaN = NaN ;document.write(a);a为false,NaN不等于任何,包括自己、
  5. undefined,null,NaN,"",0,false ==>这些值转换为布尔值都是false,其他的值为true
  6. !是把表达式变成布尔值再取反,!!是把表达式变成布尔值,!!0 = false
  7. typeof() {},[],null,都会返回object,undefined会返回’undefined’,NaN返回number,typeof(typeof(a)) --> String
  8. 显示类型转换 Number() 布尔值会返回1 0,null的返回值是0,undefined是NaN
  9. parseInt()解析时会从从左向右解析,从数字类开始看,看到非数字类截止‘256px’返回256
  10. String()不论传什么都会转换成字符串 包括undefined,但是undefined和null没有toString方法
  11. 隐式类型转换 isNaN() 相当于 Number(‘abc’) 拿Number转换的结果再和NaN作比较

练习

1、计算2的n次幂,n可输入,n为自然数

var n = parseInt(window.prompt('input'))
	var mul = 1;
	for(var i = 0;i < n;i++){
		// mul = mul * 2
		mul *= 2;
	}
	console.log(mul)

2、计算n的阶乘

var n = parseInt(window.prompt('input'))
	var mul = 1;
	for(var i = 1;i<=n;i++){
		//mul = mul * i
		mul *= i;
	}
	console.log(mul)

3、著名的斐波那契数列

// 1 1 2 3 5 8 13
var n = parseInt(window.prompt('input'))
var first = 1,
	second = 1,
	third;
//前两位固定是1
if (n <= 2) {
	document.write('1')
}else{
	for(var i = 0;i < n - 2;i++){
		third = first + second;
		first = second;
		second = third;
	}
	document.write(third)
}

4、打印1到100之间的质数

var count = 0;
//拿出1到100的数
for(var i = 1;i <= 100 ;i++){
	// 让这个数除以1到自身的所有的数
	for(var j =1 ; j <= i ;j++){
		if(i % j == 0){
			count ++
		}
	}
	// 如果只有1和自己能被整除,那么他是质数
	if (count == 2) {
		document.write(i + " ")
	}
	count = 0;
}
var count = 0;
//拿出1到100的数
for(var i = 2;i <= 100 ;i++){
	//  Math.sqrt(i) 求一个数的平方数  如100 = 10 * 10,如果在10以下没有可以让他整除的数,那么10以上也不会有
	for(var j =1 ; j <= Math.sqrt(i) ;j++){
		if(i % j == 0){
			count ++
		}
	}
	// 如果只有1能除
	if (count == 1) {
		document.write(i + " ")
	}
	count = 0;
}
var str = false + 1; //隐式类型转换 false>>0
console.log(str)  // 1
var demo = false ==1; //demo = false
console.log(demo)
if (typeof(a)&&-true + (+undefined) + "") { // typeof(a) >> "undefined"  -true >> 1 +undefined >> NaN  前面是"undefined" 后面是"NaN"  所以if里是true
    console.log('基础好')
}
if (11 + '11' * 2 == 33) { // 11 + 22 == 33 *有隐式类型转换  会被转换成22
    console.log('基础好')
}
!!" " + !!"" - !!false || console.log('哈哈哈') //true + false -false  1 + 0 - 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值