/**
Ternary Conditionals
*/
//
//**Bad**
//
var isArthur = false;
var weapon;
if(isArthur){
weapon = "Excalibur";
}else{
weapon = "Longsword";
}
//
//**Good**
//
var weapon = isArthur ? "Excalibur" : "Longsword";
//
//**Be careful**
//
console.log("Current weapon: "+ isArthur ? "Excalibur" : "Longsword");//This will log out "Excalibur"
/*Why? we set isArthur = false;
Because propriety level '+' > '?', and in Javascript only undefined, null, false, 0, NaN
that we consider are false, other always evaluate as "truthy".
So "String" ? "Excalibur" : "Longsword" --> "Excalibur"*/
//
//**To Fix**
//
console.log("Current weapon: "+ (isArthur ? "Excalibur" : "Longsword")); //--> "Longsword" /**
Compound ternary conditionals
*/
var isArthur = true;
var isKing = false;
console.log("Current weapon: "+ (isArthur && isKing ? "Excalibur" : "Longsword")); //--> "Longsword" /**
Ternaries can take action
*/
console.log(isArthur && isKing ? alert("Hail Arthur, King of the Britons!") :
alert("Charge on, ye Knight, for the glory of the King!")); //--> "Charge on, ye Knight, for the glory of the King!" /**
Build and choose functions on the fly
*/
console.log(isArthur && isKing ? function(){
alert("Hail Arthur, King of the Britons!");
}() :
function(){
alert("Charge on, ye Knight, for the glory of the King!")
}());
//
//**Be careful**
//
/*
Remember that adding the parentheses calls the function expression!
*/ /**
Multiple actions in ternaries
*/
console.log(isArthur && isKing ? (weapon = "Excalibur" , helmet = "Goosewhite"):
(weapon = "Longsword" , helmet = "Iron Helm")); /**
Lastly, ternaries can be nested!
*/
var isArthur = true;
var isKing = false;
var isArcher = true;
var weapon;
var helmet;
isArthur && isKing ? (weapon = "Excalibur", helmet="Goosewhite")
:
isArcher ? (weapon = "Longbos", helmet="Mail Helm")
: (weapon = "Longsword" , helmet = "Iron Helm"); // --> weapon = "Longbos", helmet="Mail Helm"
//
//**NOTICE**: This is not easy to read! Don't do this!
//

[Javascript] Ternary Conditionals的更多相关文章

  1. JavaScript基础入门 - 01

    JavaScript入门 - 01 准备工作 在正式的学习JavaScript之前,我们先来学习一些小工具,帮助我们更好的学习和理解后面的内容. js代码位置 首先是如何编写JavaScript代码, ...

  2. 新手怎么学JS?JavaScript基础入门

    新手应该怎么学习JS?JavaScript入门 - 01 准备工作 在正式的学习JavaScript之前,我们先来学习一些小工具,帮助我们更好的学习和理解后面的内容. js代码位置 首先是如何编写Ja ...

  3. 新手该如何学习JavaScript ?

    JavaScript入门 - 01 准备工作 在正式的学习JavaScript之前,我们先来学习一些小工具,帮助我们更好的学习和理解后面的内容. js代码位置 首先是如何编写JavaScript代码, ...

  4. [译]Javascript中的Ternary operator

    本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU& ...

  5. 读高性能JavaScript编程 第四章 Conditionals

    if else 和 switch    &&    递归 if else 和 switch 一般来说,if-else 适用于判断两个离散的值或者判断几个不同的值域.如果判断多于两个离散 ...

  6. javascript 核心语言笔记 4 - 表达式和运算符

    表达式(expression)是 JavaScript 中的一个短语(phrases),JavaScript 解释器会将其计算(evaluate)出一个结果.程序中的常量.变量名.数组访问等都是表达式 ...

  7. javascript运算符语法概述

    × 目录 [1]个数 [2]优先级 [3]结合性[4]类型[5]规则表 前面的话 javascript中的运算符大多由标点符号表示,少数由关键字表示,它们的语法言简意赅,它们的数量却着实不少.运算符始 ...

  8. JavaScript简易教程(转)

    原文:http://www.cnblogs.com/yanhaijing/p/3685304.html 这是我所知道的最完整最简洁的JavaScript基础教程. 这篇文章带你尽快走进JavaScri ...

  9. Lua和Javascript差异对比

    Lua模拟器js方案 1.语法级模拟lua与js语言差异 1.1注释 js 为//,lua为--. 1.2变量js利用val来声明全局变量不存在局部变量,lua则不需要直接定位则为全局变量,local ...

随机推荐

  1. PHP session用redis存储

    redis的官方github这么说: phpredis can be used to store PHP sessions. To do this, configure session.save_ha ...

  2. tsinsen A1067. Fibonacci数列整除问题 dp

    A1067. Fibonacci数列整除问题 时间限制:1.0s   内存限制:512.0MB   总提交次数:2796   AC次数:496   平均分:51.83 将本题分享到:     查看未格 ...

  3. ESB的几个基本概念

    京-星之泪:  请教一个问题:esb中路由和管道对的概念应该怎么理解,各自有什么用途,他们之间的关系 北京-kimmking: transport  endpoint inbound  outboun ...

  4. ORA-00918:未明确定义列解决

    ORA-00918:未明确定义列解决 问题:ORA-00918:未明确定义列 eg. select  name,  name  from a  left  join b  on a.flag = b. ...

  5. Memcached (第一篇)

    Memcached是“分布式”的内存对象缓存系统,那么不需要“分布”的.不需要共享的或者干脆规模小到只有一台服务器的应用,Memcached不会带来任何好处,相反还会拖慢系统效率,因为网络连接同样需要 ...

  6. linux下面mmap和setsignal函数用法

    #include <stdio.h> #include <stdlib.h> #include <sys/mman.h> #include <fcntl.h& ...

  7. 【转载】C#堆和栈的区别

    原文出处 理解堆与栈对于理解.NET中的内存管理.垃圾回收.错误和异常.调试与日志有很大的帮助.垃圾回收的机制使程序员从复杂的内存管理中解脱出来,虽然绝大多数的C#程序并不需要程序员手动管理内存,但这 ...

  8. springboot线程池的使用和扩展

    我们常用ThreadPoolExecutor提供的线程池服务,springboot框架提供了@Async注解,帮助我们更方便的将业务逻辑提交到线程池中异步执行,今天我们就来实战体验这个线程池服务: 本 ...

  9. 值得借鉴的Objective-C编程规范

    Daniel's Objective-C Coding Style Guidelines http://google-styleguide.googlecode.com/svn/trunk/objcg ...

  10. 《Java并发编程实战》第四章 对象的组合 读书笔记

    一.设计线程安全的类 在设计线程安全类的过程中,须要包括下面三个基本要素:  . 找出构成对象状态的全部变量.  . 找出约束状态变量的不变性条件.  . 建立对象状态的并发訪问管理策略. 分析对象的 ...