声明(Declarations)
undefined值在布尔类型环境中会被当作false。
数值类型环境中undefined值会被转换为NaN。
对一个空变量求值时,空值 null 在数值类型环境中会被当作0来对待,而布尔类型环境中会被当作false
JavaScript 变量感觉上是被“提升”或移到了所有函数和语句之前。提升后的变量将返回 undefined 值,所以即使在使用或引用某个变量之后存在声明和初始化操作,这个被提升的引用仍将得到 undefined 值。
由于存在变量声明提升,一个函数中所有的var语句应尽可能地放在接近函数顶部的地方。这大大地提升了程序代码的清晰度。
(在 ECMAScript 2015 中,let(const)将不会提升变量到代码块的顶部。因此,在变量声明之前引用这个变量,将抛出错误ReferenceError。这个变量将从代码块一开始就处在一个“暂时性死区”,直到这个变量被声明为止。)
对于函数,只有函数声明会被提升到顶部,不包括函数表达式。
/* 函数声明 */ foo(); // "bar" function foo() { console.log("bar"); } /* 函数表达式 表达式定义的函数,成为匿名函数。匿名函数没有函数提升。*/ baz(); // TypeError: baz is not a function //此时的"baz"相当于一个声明的变量,类型为undefined。 由于baz只是相当于一个变量,因此浏览器认为"baz()"不是一个函数。 var baz = function() { console.log("bar2"); };
全局对象是 window,你可以通过指定 window 或 frame 的名字,从一个 window 或 frame 访问另一个 window 或 frame 中声明的变量。例如,设想一个叫 phoneNumber 的变量在文档里被声明,你可以在子框架里用 parent.phoneNumber 来引用它。
常量(Constants)
在同一作用域中,不能用与变量或函数同样的名字来命名常量。然而,对象属性是不受保护的,所以下面的语句执行没有问题。
const MY_OBJECT = {"key": "value"}; MY_OBJECT.key = "otherValue";
数据结构和类型
六种是 原型 的数据类型 以及 Object 对象
Objects 和 functions 是本语言的其他两个基本要素。你可以将对象视为存放值的命名容器,而将函数视为你的应用程序能够执行的过程(procedures)。
在涉及加法运算符(+)的数字和字符串表达式中,JavaScript 会把数字值转换为字符串。
x = "The answer is " + 42 // "The answer is 42" y = 42 + " is the answer" // "42 is the answer"
在涉及其它运算符(译注:如下面的减号'-‘)时,JavaScript语言不会把数字变为字符串。例如(译注:第一例是数学运算,第二例是字符串运算):
"37" - 7 // 30 "37" + 7 // "377"
字符串转换为数字(converting strings to numbers)
parseInt()和parseFloat()
将字符串转换为数字的另一种方法是使用单目加法运算符。
"1.1" + "1.1" = "1.11.1" (+"1.1") + (+"1.1") = 2.2 // 注:加入括号为清楚起见,不是必需的。
对象属性名字可以是任意字符串,包括空串。如果对象属性名字不是合法的javascript标识符,它必须用””包裹。属性的名字不合法,那么便不能用.访问属性值,而是通过类数组标记(“[]”)访问和赋值。
var unusualPropertyNames = { "": "An empty string", "!": "Bang!" } console.log(unusualPropertyNames.""); // 语法错误: Unexpected string console.log(unusualPropertyNames[""]); // An empty string console.log(unusualPropertyNames.!); // 语法错误: Unexpected token ! console.log(unusualPropertyNames["!"]); // Bang!
注意:
var foo = {a: "alpha", 2: "two"}; console.log(foo.a); // alpha console.log(foo[2]); // two //console.log(foo.2); // Error: missing ) after argument list //console.log(foo[a]); // Error: a is not defined console.log(foo["a"]); // alpha console.log(foo["2"]); // two
在ES2015,对象字面值扩展支持在创建时设置原型,简写foo:foo分配,定义方法,加工父函数(super calls),计算属性名(动态)。总之,这些也带来了对象字面值和类声明紧密联系起来,让基于对象的设计得益于一些同样的便利。
var obj = { // __proto__ __proto__: theProtoObj, // Shorthand for ‘handler: handler' handler, // Methods toString() { // Super calls return "d " + super.toString(); }, // Computed (dynamic) property names [ 'prop_' + (() => 42)() ]: 42 };
能在JavaScript的字符串中使用的···特殊字符···
转义字符
// 引号转义 var quote = "He read /"The Cremation of Sam McGee/" by R.W. Service."; // 转义反斜线 var home = "c://temp"; // 转义换行 一条语句拆成多行书写 var str = "this string / is broken / across multiple/ lines." console.log(str); // this string is broken across multiplelines. // Javascript没有“heredoc”语法,但可以用行末的换行符转义和转义的换行来近似实现 var poem = "Roses are red,/n/ Violets are blue./n/ I'm schizophrenic,/n/ And so am I."
JavaScript 诞生于 1995 年,它的出现除妖是用于处理网页中的前端验证,所谓的前端验证,就是指检查用户输入的内容是否符合一定的规则。
HTML用来组织网页的内容,CSS用来定义网页的外观,而JavaScript(简称JS)的设计本意是想给网页加入一些交互动效。 尽管如同我们在CSS3进阶章节中讲述到的,CSS也开始提供一些交互和动画特性,比如伪类:hover,就是一种描述用户鼠标悬停在元素上的交互状态。 但是这些特性远不能满足开发者对文档的动态处理需求,比如动态创建、删除、更新元素乃至页面片段(DOM),更不用说操作浏览器(BO
本文向大家介绍javascript基础知识讲解,包括了javascript基础知识讲解的使用技巧和注意事项,需要的朋友参考一下 本篇适合javascript新手或者学了前端一段时间,对js概念不清晰的同学~~。 学习目的 本文针对javascript基础薄弱的同学,可以加深对javascript的理解。 本文将讲述以下几点对于初学者开说javascript(有的是大部分语言都有的)的坑 讲解内容如
本文向大家介绍bootstrap基础知识学习笔记,包括了bootstrap基础知识学习笔记的使用技巧和注意事项,需要的朋友参考一下 在此就不做 bootstrap 的介绍了,近几年 bootstrap 越来越流行,一点不亚于 js 中的 jquery。 以下为 bootstrap 3.3.5 学习中记录的东西,方便查阅,作者使用的是 jsp ,跟 html 可能有稍许不同,请自行参考修改 【引用文
基础知识 基于 ruby 写的 官网文档:https://www.elastic.co/guide/en/logstash/5.2/first-event.html 如果是通过网络来收集,并不需要所有机子都装,但是如果是要通过读取文件来收集,那文件所在的那个机子就的安装 配置文件的写法格式:https://www.elastic.co/guide/en/logstash/5.2/configura
这些基础知识简单了解一下就可以了,Linux 用的多了 就会慢慢熟悉理解了。 快捷键表 Ctrl键是终端用户常用的按键,但大多数触摸键盘都没有这个按键,因此 Termux 使用音量减小按钮来模拟Ctrl键。 例如,在触摸键盘上按音量减小+ L就相当于是键盘上按Ctrl + L的效果一样,达到清屏的效果。 Ctrl + A -> 将光标移动到行首 Ctrl + C -> 中止当前进程 Ctrl +