3-循环、引用值、typeof()、显示与隐式类型转换

(1)循环

1、for循环

步骤:
1、声明变量i= 0

​ 2、if(i < 10){

​ console.log(i)

​ }

​ 3、i++

​ 重复步骤2、3,直到 2中条件不满足停止循环

for(var i = 0; i < 10; i++){
	console.log(i);
}

一道面试题:

打印0-100的数
()只能有一句,不能写比较
{} 不能出现i++ i–

var i = 100;
for(;i--;){
 console.log(i)
}

按照执行步骤,也可以写成这样

var i = 0;
for(; i < 10;){
	console.log(i);
	i++;
}

for循环可以转换成while循环

2、while循环
var i = 0;

while(i < 10){
	console.log(i);
	i++;
}
3、死循环
while(1){
	console.log(i);
	i++;
}

for(;1;){
	console.log(i);
	i++;
}
4、break

终止循环

var i = 1;
for(;i;){
  console.log(i);
  i++
  if(i == 11){
    break; // i = 0 只需要让判读变为false就能终止循环
  }
}

从0开始做加法,加到什么时候总和小于100

var sum = 0;
for(var i = 0; i < 100; i++){
	sum += i;

	if(sum >= 100){
		break;
	}
	
	console.log(i, sum);
}
5、continue

跳过当前循环,执行下一次循环。

100以内的数跳过可以被7整除或者个位数是7的数

for(var i = 0; i <=100; i++){
	if(i % 7 ==0 || i % 10 == 7){
		continue;
	}
	console.log(i);
}
6、do{}while()

至少执行一次

var i = 0;
do{
	console.log('我要开始循环了');
	i++;
}while(0);
7、一些例子

(1)10的n次方

var n = 5;
var num = 1;
for(var i = 0; i < n; i++){
    num *= 10;
}
console.log(num);

(2)5的阶乘

var n = 5;
var num = 1;
for(var i = 1; i <=n; i++){
   num *= i;
}

(3)数字反转

var num = 789;
var a = num % 10;
var b = (num - a) % 100 /10;
var c = (num - b * 10 -a)/100;
console.log(""+a+b+c);

(4)打印三个数中的最大数

var a = 1,
    b = 2,
    c = 3;
if(a > b){
	if(a > c){
		console.log(a);
	}else{
		console.log(c);
	}
}else{
	if(b > c){
		console.log(b);
	}else{
		console.log(c);
	}
}
var a = 1,
    b = 2,
    c = 3;
if(a < b){
	a = b;
}    
if(a < c){
	a = c;
}
console.log(a);

(5)打印100以内的质数

质数(素数)是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数

var count = 0
for(var i = 2; i < 100; i++){
  for(var j = 1; j <=i; j++){
    if(i % j == 0){
     count++;
    }
  }
  if(count == 2){
     console.log(i);
   }
  count = 0;
}

(2)、引用值

array object function date RegExp都是引用值

object对象

var person = {
	name: '小王',
	age: 18,
	height:180,
	weight: 140,
	job:'WEB开发工程师'
}

(3)、typeof()

typeof方法是javascript内置的方法,获取相应的数据类型

number string boolean object undefined function

console.log(typeof(123)); // number
console.log(typeof('123')); // string
console.log(typeof(true)); // boolean

console.log(typeof({}));  // object
console.log(typeof([]));  // object 
// 这里的object不是指具体声明的对象例如person对象,代表的是引用类型
// object/array的引用类型是Object

console.log(typeof(null)); //object (属于历史遗留问题,最初的时候指的是空对象)

console.log(typeof(undefined)); //undefined

console.log(typeof(1-1)); // number
console.log(typeof(1- "1")); // number
console.log(typeof("1" - "1")); // number

console.log(typeof(a)); //undefined
console.log(typeof(typeof(123)));     //string
console.log(typeof(typeof(undefined)));//string

console.log(a);在这里插入图片描述

用console.log(typeof(a)); 包裹就不会报错,会返回undefined

(4)、显示及隐式类型转换

1、显示类型转换

(1)、Number() 转化成数

var a = '123';
console.log(Number(a));  //123
console.log(typeof(Number(a))+ '-' + Number(a)); // number-123
var a = true;
console.log(typeof(Number(a))+ '-' + Number(a)); //number-1
var a = 'true';
 console.log(typeof(Number(a))+ '-' + Number(a)); //number-NaN
var a = null;
console.log(typeof(Number(a))+ '-' + Number(a)); //number-0
var a = undefined;
console.log(typeof(Number(a)) + "-" + Number(a)); //number-NaN

(2)、parseInt() 转化成整型

var a = '123';
console.log(typeof(parseInt(a)) +'-'+parseInt(a)); // number-123
var a = '3.99';
console.log(typeof(parseInt(a)) +'-'+parseInt(a)); // number-3
var a = true;
console.log(typeof(parseInt(a)) + '-' + parseInt(a));//number-NaN
var a = null;
console.log(typeof(parseInt(a)) + '-' + parseInt(a)); //number-NaN
var a = '10';
console.log(parseInt(a,16)); //以16进制为基数(radix)转换为10进制的数,
														 // 基数的取值范围2-36
                             //也就是把传进来的a当成16进制处理成10进制后输出 16
console.log(parseInt('abc123')); //NaN
console.log(parseInt('123abc')); //123

(3)、parseFloat()

console.log(parseFloat(3)); // 3
var num = parseFloat('3.1465926');
console.log(num.toFixed(2)); //3.15  四舍五入

(4)、String()

console.log(String(123)); // 123
console.log(typeof(String(123))); //string
console.log(123 + ''); // 123
var a = 1234;
console.log(String(a).length); // 4

(5)、toString()

var str = '3.14';
console.log(str.toString()); // 3.14

null和undefined没有toString方法

var str = null;
console.log(str.toString()); // 报错 
var str = undefined;
console.log(str.toString()); // 报错 

toString(radix) toString有radix这个参数

var str = '100';
console.log(parseInt(str,2).toString(16));//4 以二进制为基数转换为10进制的数再转换为16进制的数

(6)、Boolean

console.log(Boolean(1)); // true

undefined null NaN “” 0 false 这6个都是false,其他的都true

console.log(Boolean(null)); // false
2、隐式类型转换
var a = '123';
a++;
console.log(a); // 124
var num = '123';
console.log(typeof(+ num)); // number
var num = '123';
console.log(typeof(- num) + ':' + - num); // number:-123
var a = "a" + 1;
console.log(a); // a1

/ * - % 这4个都是将str -> number

var a = '3' * 2;
console.log(a); // 6
var a = '1' > 2;
console.log(a); // false

字符串与字符串比较,会·转换成ASCll码比较

var a = 'a' > 'b';
console.log(a); // false
var a = 1 == '1';
console.log(a); // true
var a = 1 === '1'; // 不进行隐式转换
console.log(a); // false
var a = NaN == NaN; 
console.log(a); // false
var a1 = 2 > 1 > 3;
var a2 = 2 > 1 == 1;
console.log(a1,a2); //false true

undefined和null 既不大于0也不等于0也不小于0

var a1 = undefined == 0;
var a2 = null == 0;
console.log(a1,a2); //false false    

百度考过下面这个

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

isNaN()

会先进行Number()转换再进行判断。

console.log(isNaN(NaN));// true
console.log(isNaN('123')); // false
console.log(isNaN('a')); //true
console.log(isNaN(null)); //false
console.log(isNaN(undefined)); // true

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值