值类型之间的相互转化

number | string | boolean
一.转换为boolean=>Boolean(a);
var num = 10;
var s = '123';
var b1 = Boolean(num);
var b2 = Boolean(s);
console.log(b1,b2); //true true
var num1 = 0;
var s1 = "";
var b3 = Boolean(num1);
var b4 = Boolean(s1);
console.log(b3,b4); //false false
// 后期我们会在if分支结构中的判断以及循环中的判断中使用boolean类型,
// 以上两种情况下, 系统都会把非boolean的数据自动转换为boolean
// 0 | "" | null | undefined | NaN => false, 其他都会转化为true 二.转换为数字类型 Number(a) | parseInt(a) | parseFloat(a) | +
①Number(a)
console.log(Number(false), Number(true), true + true);
//0 1 2 var s1 = "123";
var s2 = "3.14";
var s3 = "123abc";
var s4 = "3.14.15";
var s5 = "abc123";
console.log(Number(s1), Number(s2), Number(s3), Number(s4), Number(s5));
// 123 3.14 NaN NaN NaN ②parseInt(a) parseFloat(a)
var s1 = '3.14.15';
var n1 = parseInt(s1);
var n2 = parseFloat(s1);
console.log(n1,n2); //3 3.14 ③ +
//常用转化的字符串一定是一个合法的数字字符串形式(s1, s2)
var s1 = '123';
var s2 = '3.14';
var n1 = +s1;
var n2 = +s2;
console.log(n1,n2); //123 3.14 非数字:NaN // 当一个其他类型转化为数字类型的产物
// 任何判断一个结果是否是NaN => isNaN(运算)
var s = 'abc';
var n = +s;
console.log(isNaN(n)); //true 三.转换为字符串类型 String(a) | .toString() | "" +
var n1 = 123;
var s1 = String(n1);
var s2 = n1.toString();
var s3 = "" + n1;
console.log(s1,s2,s3); //'123' '123' '123'
var s4 = 123..toString();
// ..语法第一个.小数点,第二个.方法的调用 // 弱语言类型
//优点考虑字符串类型
console.log(3 + "5"); // "35"
console.log(3 - "5"); // -2 // 总结:
// 1.最快转化为数字类型 +"123" | +true
// 2.最快转化为字符串形式 "" + 123 | "" + true

运算符

/*
算数运算符:+ - * / % ++ --
赋值运算符:+= -= *= /= %=
比较运算符:> < >= <= == === != !==
逻辑运算符:&& || !
三目运算符:结果 = 条件表达式 ? 结果1 : 结果2;
*/ 一.算数运算符
// js中不区分整形和浮点型, 结果为什么就是什么
var res = 5 / 2; // 2.5 // 任何正整数对n取余 结果为: [0, n-1] // num++ | ++num => num = num + 1; => 自增1
// ++在后先赋值再自增 | ++在前先自增再赋值
var num = 10;
var r1 = ++num;
console.log(r1); // ++num => r1=11 | num++ => r1=10
console.log(num); // 11 二.赋值运算符
x += 10; // => x = x + 10 三.比较运算符
var x = 123;
var y = '123';
console.log(x == y); // 只做值比较 => true
console.log(x === y); // 全等: 值与类型都必须相等 => false 四.逻辑运算符
// 逻辑与: 条件1 && 条件2 => 全为真则真,否则为假
// 逻辑或: 条件1 || 条件2 => 全为假则假,否则为真
// 逻辑非: 非真即假,非假即真 // 逻辑与的短路效果, 条件1为假, 条件2就不会被执行
var a = 10;
var b = 20;
var c = '10';
var res = a === c && b++;
console.log(res,b) //false 20 var res = a == c && b++;//res结果即b的结果,b++先赋值后自增
console.log(res,b) //20,21 // 逻辑或的短路效果, 条件1为真, 条件2就不会被执行
var res = a == c || b++;
console.log(res,b) //true 20 var res = a === c || ++b; //res结果即b的结果,++b先自增后赋值
console.log(res,b) //21 21 五.三目运算符
// 三目运算符:结果 = 条件表达式 ? 结果1 : 结果2;
// 条件满足, 执行:前的结果1, 否则执行:后的结果2
var x = 10;
var y = '10';
var res = x == y ? 'x与y的值相等':'x与y的值不等';
console.log(res) //x与y的值相等

if条件判断

// 三种弹出框
// alert(123); // 普通弹出框
// var res = prompt("请输入:"); // 输入框, 得到输入的字符串内容
// var res = confirm("请选择"); // 确认框, 得到true | false // +做类型转换
var salary = +prompt("请输入工资:");
if (salary > 88888) {
console.log("开始还账!");
salary -= 50000; console.log("开始购物 30000!");
salary -= 30000; // 最少剩8888 if (salary > 10000) {
console.log("旅游!");
} else if (salary > 9000) {
console.log("花200学习!");
salary -= 200;
} else {
console.log("吃土!")
} } else {
console.log("要求提薪");
}
// if可以省略else if, 也可以省略else
// if可以嵌套
// if(条件){ 逻辑体 } else if(条件){ 逻辑体 } else{ 逻辑体 }

循环

// 循环比较
// 1.for: 解决已知循环次数的
// 2.while: 可以解决所有for循环可以解决的问题,也可以解决不知道循环次数但知道结束条件
// 3.do...while: 无论条件是否满足,循环体都会被执行一次
一.for循环
for (循环变量①; 条件表达式②; 循环变量增量③) {
代码块④;
}
eg:
for(var i = 0; i <; i++){
console.log('打气!')
}
//① ②④③ ... ②④③ ② 二.while循环
while (条件表达式) {
代码块;
}
eg:
var j = 0;
while(j < 5){
console.log('打气');
j++;
} 三.do..while 循环
do {
代码块;
} while (条件表达式);
eg:
var k = 0;
do{
console.log('打气!');
k++;
}while(k < 5); // break:结束本层循环
var x = 0;
while(x < 5){ //打印0,1,2
if (x > 2) {
break;
}
console.log(x);
x++;
}
// continue:结束本次循环进入下一次循环
var x = 0;
while(x <){ //打印0,1,3,4
if (x == 2){
x++;
continue;
}
console.log(x);
x++;
}

函数

// js函数的重点: 如何给事件提供功能

// 1.函数的定义
// function 函数名(形参列表) {
// 函数体;
// } // 2.函数的调用
// var res = 函数名(实参列表);
eg:
//fn1();
function fn1() {
console.log('函数fn1')
}
fn1(); //定义前后都可以调用 // 3.函数的参数
// i.个数不需要统一
function fn1(a,b) {
console.log(a,b)
}
fn1(1,2); //1 2
fn1(1); //1 undefined
fn1(1,2,3); //1 2 fn2("abc");
function fn2() { // 不需要参数就不接收, 需要就接收
console.log("自己玩")
}
// ii.可以任意位置具有默认值
function fn3(a,b=1,c,d=2) {
console.log(a,b,c,d);
}
fn3(); //undefined 1 undefined 2
fn3(6); //6 1 undefined 2
fn3(6,8); //6 8 undefined 2
fn3(6,null,8); //6 null 8 2
// iii.通过...语法接收多个值
function fn4(...arr) {
console.log(arr)
}
fn4(); //[]
fn4(1); //[1]
fn4(1,2,3,4); //[1,2,3,4] // 4.返回值讲解
// i.可以空return操作,用来结束函数
function fn5(a) {
if (a == 10){
return;
}
console.log('参数不为10')
}
fn5(10);
// ii.返回值可以为任意js类型数据
function fn6() {
return{
'name':'henry',
'age':25
}
}
var res = fn6();
console.log(res); //{name: "henry", age: 25}
console.log(res.age); //25
// iii.函数最多只能拥有一个返回值
function fn7() {
return 1,true;
}
var res = fn7();
console.log(res) //将最后一个值返回
//解决方案 return[1,true]; // 5.匿名函数: 没有名字的函数, 函数只能在定义的时候自己来调用一次, 之后再也无法被调用
// 匿名函数 自定义
(function () { // 产生了一个局部名称空间(局部作用域), 并且可以随着匿名函数调用完毕, 被回收
var aaa = 1000;
console.log("匿名函数的自调用")
})();

值类型之间的相互转化,运算符,if条件判断,循环,函数的更多相关文章

  1. php类型的相关函数,运算符,条件判断,循环

    类型的相关函数 函数的原型  :函数返回值类型 函数名(参数1类型 参数1,参数2类型 参数2--) 1, 任何一个函数,都要考虑它是否有返回值以及该返回值的类型,如果该函数没有返回值,就用void来 ...

  2. js 类型之间的相互转化

    设置元素对象属性 var img = document.querySelector("img") img.setAttribute("src","ht ...

  3. 表达式树练习实践:C#值类型、引用类型、泛型、集合、调用函数

    目录 表达式树练习实践:C#值类型.引用类型.泛型.集合.调用函数 一,定义变量 二,访问变量/类型的属性字段和方法 1. 访问属性 2. 调用函数 三,实例化引用类型 四,实例化泛型类型于调用 五, ...

  4. python数据类型、输入输出、运算符、条件判断、循环

    变量以及类型 变量:存储程序运行中的数据,变量有3个要素:变量名.变量类型.变量值.python属于弱类型语言,不需要声明变量类型. [root@localhost python]# ipython3 ...

  5. [19/09/16-星期一] Python的运算符和条件判断语句

    一.运算符 (1)算术运算符  + 加法运算符(如果是两个字符串之间进行加法运算,则会进行拼串操作) a = 10 + 5  计算 a = 'hello' + ' ' + 'world' 拼串  - ...

  6. JavaScript的运算符、条件判断、循环、类型转换(9.25 第十一天)

    JS的运算符 加 + 减 - 乘 * 除 / 取余 % 自增 ++ 自减 -- 赋值运算符 a=3 a+=3  a=a=3 a-=3   a=a-3 a*=3  a=a*2 a/=3   a=a/3 ...

  7. 写给.NET开发者的Python教程(三):运算符、条件判断和循环语句

    本节会介绍Python中运算符的用法,以及条件判断和循环语句的使用方法. 运算符 运算符包括算术运算符.赋值运算符.比较运算符.逻辑运算符等内容,大部分用法和C#基本一致,下面我们来看一下: 算数运算 ...

  8. Python 条件判断 循环

    age = 20 if age >= 18: print('your age is', age) print('adult') 根据Python的缩进规则,如果if语句判断是True,就把缩进的 ...

  9. python笔记五(条件判断/循环/break和continue)

    一 条件判断 if <条件判断1>: <执行1> elif <条件判断2>: <执行2> elif <条件判断3>: <执行3> ...

随机推荐

  1. Could not find result map java.lang.Integer] with root cause

    错误的代码 <select id="selectpGoodsInfoIdByGoodsId" parameterType="java.lang.Integer&qu ...

  2. 迭代器模式(java版)

    迭代器模式的组成部分 Aggregate(抽象聚合类) 它用于存储和管理元素对象,声明一个createiterator()方法用于创建一个迭代器对象,充当抽象迭代器工厂角色. ConcreteAggr ...

  3. c#之正则表达式

    一,C#正则表达式符号模式 字 符 描 述 \ 转义字符,将一个具有特殊功能的字符转义为一个普通字符,或反过来 ^ 匹配输入字符串的开始位置 $ 匹配输入字符串的结束位置 * 匹配前面的零次或多次的子 ...

  4. Spring Boot中Service用@Transactional 注解

    一般来说function2和function1用的是同一个Transaction. 这个取决于@Transactional 的 propagation设置(事务的传播性) 默认的是 1 @Transa ...

  5. hdu5489 树状数组+dp

    2015-10-06 21:49:54 这题说的是个给了一个数组,然后删除任意起点的一个连续的L个数,然后求最长递增子序列<是递增,不是非递减>,用一个树状数组维护一下就ok了 #incl ...

  6. QTCreator 调试:unknown debugger type "No engine"

    [1]QTCreator调试,应用程序输出:unknown debugger type "No engine" 如图:下断点->调试程序->应用程序输出 说明:调试器无 ...

  7. Linux 操作系统镜像下载

    http://mirror.centos.orghttp://mirrors.163.comhttp://mirrors.suhu.com 例如:下载centos http://mirrors.163 ...

  8. java中的神奇"this"

    java中的神奇"this",神奇的原因事它能不用new就可以直接创造一个对象出来,后来研究发现,其实java的“this”使用时,也是"new"了一个当前的对 ...

  9. 转:C# 小数位数保留的方法集锦

    转载自:http://www.jb51.net/article/17010.htm 1. System.Globalization.NumberFormatInfo provider = new Sy ...

  10. 自学Java第七周的总结

    这一周里我将看过的知识点又复习了一遍,下个星期打算将题做一遍