Eloquent JavaScript #02# program_structure
第一章中作者介绍了各种值,但是这些独立的值是没有意义的,只有当值放在更大的框架的时候才会彰显它们的价值。所以第二章开始介绍程序结构。
1、var VS. let 以及 const
作者推荐用 let ,因为var 有一些稀奇古怪的行为?暂时没有详细解释。
const 用于绑定常量值
2、关于 JavaScript 的运行环境
在运行 JavaScript 程序的环境中,并不仅仅只有你定义的绑定,还有其它各式各样初始化就有的“环境绑定”。
例如说 prompt , 这是一个持有函数类型的绑定,不过在现代浏览器里几乎不用了,理由是它没法装饰。。不过在玩具式程序里倒是用得很多。
typeof prompt
"function"
typeof NaN
"number"
3、关于自增号。
在 JavaScript 里 ++ -- += -= *= 都是可以用的,但是在 Python 里不行,它有 += 却没有 ++ --
4、javascript 命名规范
遵循驼峰命名法(可以发现 JavaScript 标准函数就是那样命名的, 但为什么像 Number 那样的函数第一个字母是大写呢?因为是它是构造器)
Number("xxxx")
NaN Number("222")
222
5、打印下面这个图形:
#
##
###
####
#####
######
#######
let result = "#";
for (let i = 0; i != 7; ++i) {
console.log(result);
result += "#";
}
6、关于控制流的小练习
Write a program that uses console.log
to print all the numbers from 1 to 100, with two exceptions. For numbers divisible by 3, print "Fizz"
instead of the number, and for numbers divisible by 5 (and not 3), print "Buzz"
instead.
When you have that working, modify your program to print "FizzBuzz"
for numbers that are divisible by both 3 and 5 (and still print "Fizz"
or "Buzz"
for numbers divisible by only one of those).
<script type="text/javascript">
for (let i = 1; i <= 100; ++i) {
if (i % 3 === 0 && i % 5 === 0) {
console.log("FizzBuzz");
} else if (i % 5 === 0) {
console.log("Buzz");
} else if (i % 3 === 0) {
console.log("Fizz");
} else {
console.log(i);
}
}
</script>
PS. 优先级 + - 等远大于 == != 远大于 &&和||(其中 && 大于||) 赋值号优先级是最小的,另外,上面的 === 属于多此一举,当可以确定两边值类型相同的时候用 == 就可以了。
7、练习三:
Passing this string to console.log
should show something like this:
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
When you have a program that generates this pattern, define a binding size = 8
and change the program so that it works for any size
, outputting a grid of the given width and height.
<script type="text/javascript">
let size = Number(prompt("Enter the size of chessboard"));
if (!Number.isNaN(size)) {
// NaN 虽然含义是 "Not a Number",不过 typeof 输出类型仍然是 Number
// 另外,意外发现 IE 环境居然不支持 isNaN 属性
let result = "";
for (let i = 0; i != size; ++i) {
for (let j = 0; j != size; ++j) {
if ((i + j) % 2 == 0) {
result += " ";
} else {
result += "#";
}
}
result += "\n";
}
console.log(result);
}
</script>
Eloquent JavaScript #02# program_structure的更多相关文章
- Eloquent JavaScript #13# HTTP and Forms
索引 Notes fetch form focus Disabled fields form’s elements property 阻止提交 快速插入单词 实时统计字数 监听checkbox和rad ...
- 前端面试准备笔记之JavaScript(02)
01. this的典型应用场景 this在各个场景中取什么值,是在函数执行的时候确认的,不是在定义的时候确认的. 普通函数执行 返回window function fn1() { console.lo ...
- Eloquent JavaScript #11# The Document Object Model
索引 Notes js与html DOM 在DOM树中移动 在DOM中寻找元素 改变Document 创建节点 html元素属性 布局 style CSS选择器 动画 Exercises Build ...
- Eloquent JavaScript #10# Modules
索引 Notes 背景问题 模块Modules 软件包Packages 简易模块 Evaluating data as code CommonJS modules ECMAScript modules ...
- Eloquent JavaScript #04# Objects and Arrays
要点索引: JSON More ... 练习 1.补:js字符串的表达方式有三种: "" 和 '' 没什么区别,唯一区别在于 "" 中写 "要转义字符 ...
- Eloquent JavaScript #03# functions
索引: let VS. var 定义函数的几种方式 more... 1.作者反复用的side effect side effect就是对世界造成的改变,例如说打印某些东西到屏幕,或者以某种方式改变机器 ...
- Eloquent JavaScript #01# values
When action grows unprofitable, gather information; when information grows unprofitable, sleep. ...
- 前端之JavaScript 02
一.函数 // 最基础的函数定义 function f1() { console.log('hello world!'); } f1(); // hello world! // 带参数的函数 func ...
- JAVA企业级开发-JavaScript(02)
一.JavaScript介绍 Javascript语言诞生主要是完成页面的数据验证.因此它运行在客户端,需要运行浏览器来解析执行JavaScript代码. 特点: 交互性(它可以做的就是信息的动态交互 ...
随机推荐
- 关于PHP将对象数据写入日志的问题
有时候在调试项目的时候,需要将一个对象或者对象的实例记录下来观察数据,如果用json_encode可能拿到的是空数据, 此时,改为使用 $data = print_r($data,1); 然后将 $d ...
- IOT专用IOP平台
10.110.20.200(iot) root 789a? centos7 给展湾paul,iot-hub 10.110.20.199(iot) root ce ...
- iot-hub运行在虚拟上
ng build gradlew build java -jar iot-hub-0.0.1-SNAPSHOT.jar 后台运行 nohup java -jar iot-dm-0.0.1-SNAP ...
- 浅谈Python web框架
一.Python web框架 Web Framework,Ruby的世界Rails一统江湖,而Python则是一个百花齐放的世界,各种micro-framework.framework不可胜数,不完全 ...
- docker容器多服务(不推荐)
1.最常用方式配置进程管理工具Supervisor 2.最简单的就是把多个启动命令放到一个启动脚本里面,启动的时候直接启动这个脚本 第一种方式: 1.构建基础镜像 FROM lmurawsk/pyth ...
- 虚拟IP技术
虚拟IP技术在高可用领域像数据库SQLSERVER.web服务器等场景下使用很多,很疑惑它是怎么实现的,偶然,发现了一种方式可以实现虚拟ip.它的原理在于同一个物理网卡,是可以拥有多个ip地址的,至于 ...
- Generator yield语法和 co模块
Generator yield 语法使用,也叫生成器,实际上就是多个异步按顺序执行 1.下面是一个读取两个文件的例子 const fs = require('fs'); const readFile ...
- redhat vim编辑器永久添加行号及搜索
设置行号: 跳转到home $ cd ~ 编辑.vimrc,没有的话自动创建 $ vim .vimrc 第一行加入: set nu :wq 保存退出,即可 如果想取消设置,同理删除set nu即可 v ...
- glibc源码下载
https://www.gnu.org/software/libc/ Download sources Releases are available by source branch checkout ...
- 使用socat查看ios日志
仅供记录自己查看 mac连接ios后进程ios shell apt-get socat安装 socat socat - UNIX-CONNECT:/var/run/lockdown/syslog.so ...