JavaScript基础要点
一、值和类型及运算
JavaScript中的六种基本值类型
数字(number)、字符串(string)、布尔值(boolean)、对象(object)、函数(function)、未定义类型(undefined)。
NaN
NaN是number类型,但我们用它来表示 “非数值” 。这样来理解它:对于一个期望返回number类型值的运算,但js却对表达式中的运算过程很困惑,于是就返回了一个NaN(not a number)给你,用来告诉你这个运算是非法的,结果是不精确的或毫无意义的。
在js中只有一个值不等于其自身,这个值就是NaN!
console.log(typeof NaN);
console.log("string" - 1)
console.log(NaN == NaN)
-------------------------------------------
number
NaN
false
变量
我们可以把变量想象成许多的触须,而不是一个箱子。变量中并不包含值,而是会引用这些值。
字符串
在对字符串进行比较时,JavaScript按照从左到右逐个比较每个字符对应的ASCII码值。
强制类型转换
当运算符作用在错误类型的值上时,JavaScript会自动将其转换成自己期望的值,这种操作称为强制类型转换。
逻辑运算符的短路特性
对于或运算符 || ,从左到右遇见第一个true就发生短路,对于与运算符 && ,从左到右遇见第一个false就发生短路。短路之后立刻就返回这个短路值,不再进行计算后面的表达式。
null 和 undefined
对于 == 运算,如果运算符两侧存在null或undefined,那么只有两侧均为null 或undefined时,结果才为true。
console.log(null == 0)
console.log(null == undefined)
-------------------------------------------
false
true
二、函数
定义
定义一个函数就是定义一个普通的变量,只不过变量的类型是函数(function)。例如,下面的代码定义了一个变量square,引用了一个函数:
var square = function(x){
return x * x;
}
console.log(square(12)); --------------------------------------- 144
和大多数编程语言一样,JavaScript也可以这样声明函数:
function square(x){
return x * x;
}
console.log(square(12));
--------------------------------------- 144
可以在任何位置调用已经声明的函数。这是因为,当代码执行时,函数的声明会被移到其作用域的顶端,所有作用域内的函数调用都不会有任何问题。并且在JavaScript中,函数可以嵌套定义。
参数 和 作用域
在函数内部创建的变量和参数,都属于函数的局部变量。
var x = 0;
var test = function(x){
x = 1;
}
console.log(x); //可以看到全局变量中x的值并未改变
--------------------------------------- 0
JavaScript对传入函数的参数数量没有限制。如果有多余的参数,则它们会被忽略掉;未传入实值的参数,会被赋值为 undefined。
创建一个匿名函数并立刻执行的语法
要用小括号把函数的定义括起来。例如:
(function() {
console.log("Hello");
})();
如果写成下面这样,将会报错:
function() {
console.log("Hello");
}(); // SyntaxError
对于有参数的匿名函数可以这样写:
var x = (function(x) {
return x*x;
})(3);
console.log(x); //
三、对象类型:object
对象
object类型的值可以存储任意类型的属性,我们可以随意增删这些属性。一种创建对象的方法是使用花括号{}:
/*
属性之间用逗号分隔,属性定义方式是 propName: propValue,
如果propName不是有效的变量名或数字,则需使用引号将其括起来 var me = {
myName: "Mr Hu",
myAge: 20,
myHobby: ["English", "sing", "travel", "chat"],
"I Love You": true,
}
console.log("my age is " + me.myAge);
console.log("I Love You:" + me["I Love You"]);
console.log("The type of me is: " + typeof me); ------------------------------------------------------------
my age is 20
I Love You:true
The type of me is: object
学过python的朋友会发现JavaScript中的对象和Python中的字典十分十分相似。
属性
在JavaScript中,几乎所有的值都有属性,但null和undefined没有。
访问属性的方法有两种:
- 使用 "."操作符,该操作符之后必须接一个合法的变量名,即属性名称。
- 使用 [],如果使用[],则JavaScript会将方括号中的表达式的返回值作为属性名称。
= 运算符
我们可以使用 = 运算符来给一个属性表达式赋值。如果该属性已经存在,那么新值将替换旧值;如果之前不存在该属性,则会自动创建该属性并赋予新值。
delete 运算符
我们可以使用 delete 运算符移除目标对象的指定属性。
四、语法
分号
JavaScript并不强制要求在每个语句的结尾加分号,浏览器中负责执行js代码的引擎会自动在每个语句之后加上分号,但这种情况可能会改变程序的语义,导致运行结果与我们的期望不一致。所以建议在每个语句后面手动加上分号。
代码编写规范
建议在循环语句或if语句中,无论其中执行体中是有一行代码还是多行代码,都将其包装在花括号中。
建议使用驼峰命名。
JavaScript基础要点的更多相关文章
- javascript基础系列(入门前须知)
-----------------------小历史---------------------------- javascript与java是两种语言,他们的创作公司不同,JavaScript当时是借 ...
- JavaScript基础---语言基础(1)
写在前面: 通过四篇博客把JS基础中的基础整理一下,方便自己查阅,这些内容对于实际项目开发中也许并不会在意,但是作为JS的语言基础,自觉还是应该熟悉.在完成这三篇博客(JavaScript基础---语 ...
- JavaScript 基础 学习 (四)
JavaScript 基础 学习 (四) 解绑事件 dom级 事件解绑 元素.on事件类型 = null 因为赋值的关系,所以给事件赋值为 null 的时候 事件触发的时候,就没有事件处理 ...
- JavaScript基础
JavaScript基础 JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处 ...
- 一步步学习javascript基础篇(0):开篇索引
索引: 一步步学习javascript基础篇(1):基本概念 一步步学习javascript基础篇(2):作用域和作用域链 一步步学习javascript基础篇(3):Object.Function等 ...
- CORS基础要点:关于dataType、contentType、withCredentials
事实上,面试时我喜欢问跨域,因为多数开发者都知道它并且常用,而我希望能从面试者的回答中知道他在这个问题的深入程度,进一步看看面试者研究问题的思维方式及钻研精神,然而确实难到了很多人,当然这也不是面试通 ...
- 前端之JavaScript基础
前端之JavaScript基础 本节内容 JS概述 JS基础语法 JS循环控制 ECMA对象 BOM对象 DOM对象 1. JS概述 1.1. javascript历史 1992年Nombas开发出C ...
- 一步步学习javascript基础篇(3):Object、Function等引用类型
我们在<一步步学习javascript基础篇(1):基本概念>中简单的介绍了五种基本数据类型Undefined.Null.Boolean.Number和String.今天我们主要介绍下复杂 ...
- Javascript基础回顾 之(三) 面向对象
本来是要继续由浅入深表达式系列最后一篇的,但是最近团队突然就忙起来了,从来没有过的忙!不过喜欢表达式的朋友请放心,已经在写了:) 在工作当中发现大家对Javascript的一些基本原理普遍存在这里或者 ...
随机推荐
- AFNetworking 3.0中调用[AFHTTPSessionManager manager]方法导致内存泄漏的解决办法
在使用AFNetworking3.0框架,使用Instruments检查Leaks时,检测到1000多个内存泄漏的地方,定位到 [AFHTTPSessionManager manager] 语句中,几 ...
- Shell - 文本处理
珠玉在前,不再赘言. 常用命令 LinuxShell文本处理工具集锦 数据工程师常用的Shell命令 文件和目录管理 简明教程 AWK简明教程 SED简明教程 命令详解 linux sort,uniq ...
- Testing - 软件测试知识梳理 - 测试分类
参考信息 软件测试分类 经典软件测试技术分类 软件测试方法汇总 简洁分类 对软件内部结构的深入程度 黑盒测试:又叫功能测试.数据驱动测试或基于需求规格说明书的功能测试. 该测试类别注重于测试软件的功能 ...
- Win10 Hyper-v下虚拟机使用无线网络
首先要承认一点的是写这个随笔更大的初衷是想吐槽,搜了半天,全是一种方法,就是创建一个新的网络适配器,配置为外部网络啥啥啥,用倒是能用,就是网速那叫一个感人,我的是电信百兆光纤网页打开都如蜗牛爬,无法忍 ...
- postgresql-无序uuid tps测试
# postgresql-无序uuid tps测试 ## 无序uuid对数据库的影响 由于最近在做超大表的性能测试,在该过程中发现了无序uuid做主键对表插入性能有一定影响.结合实际情况发现当表的数据 ...
- [EXP]Jenkins 2.150.2 - Remote Command Execution (Metasploit)
## # This module requires Metasploit: https://metasploit.com/download # Current source: https://gith ...
- 关于vue项目中,手动定义的scrollTop的值
在项目中,有时需要控制scrollTop的值,比如有一个列表页,点击任意一个列表可以进入其详情页,这时如果你要返回的话, 肯定是希望还回到刚刚点击的地方,我当时的解决办法是,本地存下点击那一刻的scr ...
- DDD实战进阶第一波(三):开发一般业务的大健康行业直销系统(搭建支持DDD的轻量级框架二)
了解了DDD的好处与基本的核心组件后,我们先不急着进入支持DDD思想的轻量级框架开发,也不急于直销系统需求分析和具体代码实现,我们还少一块, 那就是经典DDD的架构,只有了解了经典DDD的架构,你才能 ...
- 服务端如何安全获取客户端请求IP地址
服务端如何获取客户端请求IP地址,网上代码一搜一大把.其中比较常见有x-forwarded-for.client-ip等请求头,及remote_addr参数,那么为什么会存在这么多获取方式,以及到底怎 ...
- Oracle 创建表并设置主键自增
创建数据库 CREATE TABLE STUDENT(ID NUMBER PRIMARY KEY, NAME VARCHAR(200) NOT NULL, SEX VARCHAR(200), CREA ...