JavaScript基础笔记(一)基本概念
基本概念
一、语法
一)区分大小写
二)标识符
书写规则同Java
三)注释
略
四)严格模式
1.在整个脚本中启用严格模式:在顶部添加
"use strict"
2.指定函数在严格模式下执行:
function doSth() {
"use strict"
//函数体
}
二、变量
ECMAScript变量类型是松散类型,所谓松散类型就是可以保存任何类型的数据。
//定义变量
var msg;
//注意由var定义的变量是局部变量,如果变量在函数中函数退出后变量就会被销毁 //省略var定义并初始化一个全局变量
msg2 = "Hi"
//不推荐在函数中定义全局变量,因为在局部作用域中定义全局变量很难维护,
//函数中的全局变量也会因为不会马上就用定义导致不必要的混乱 //定义多个
var a = 1,b = 'yes',c = 5;
三、数据类型
五种基本数据类型:Null,Undefined, Boolean, Number, String
一种复杂数据类型:Object,Object本质上是由一组无序的名值对组成。
ECMAScript不支持任何创建自定义类型机制,所以所有的类型最终都将是上述6种类型之一。
typeof操作符:用于检测变量类型。对一个值使用该操作符会返回下列字符串之一:
1."undefined":
2."boolean"
3."string"
4."number"
5."object":如果该值是对象或者null
6."function"
一)Undefined类型
Undefined类型只有一个值:undefined
var msg;
var name = undefined;
console.log(msg == undefined); //true
console.log(name === undefined); //true
// console.log(age); //报错----"age is not defined"
console.log(typeof age); //"undefined"-----对于未声明的变量,只能执行该操作
所以,显示地初始化变量是最吼的!!!!+1s
二)Null类型
Null也只有一个值:null。
undefined派生于null
alert(null == undefined); //true
三)Boolean类型
要将一个值转换为Boolean类型可以调用Boolean()函数。
各种类型转换为Boolean类型
数据类型 转换为true的值 转换为false的值
String 任何非空字符串 ""即空串
Number 任何非零数字 0和NaN
Object 任何Object null
Undefined n/a (不适用) undefined
注意:
var msg = "hi";
if (msg) { //自动转换为Boolean类型
console.log("msg is true");
}
四)Number类型
console.log(typeof Infinity); //number
console.log(typeof NaN); //number
1.整数
可以是十进制八进制(八进制严格模式无效)十六进制
var a = 070 //八进制56
var b = 079 //无效的八进制,解析为79
2.浮点数
var a = 1.0 //自动解析为1
var b = .123 //有效不推荐
var c = 1.23e3 // if (0.3+0.2 == 0.5) { //因为浮点数计算时精度问题,不要这样做
}
3.数值范围
最小:Number.MIN_VALUE 最大:Number.MAX_VALUE 超出范围自动转换为Infinity,Infinity不能参与数值计算。
判断是否属于最大与最小之间可以用:isFinite(num)函数。
4.NaN
即(Not a number)是一个特殊数值,表示本来要返回数值而没有返回的情况(这样就不用报错了)。
注意:1.任何涉及NaN的操作都会返回NaN 2.NaN与任何数值都不相等,包括其本身。
isNaN()
console.log(isNaN(NaN)); //true
console.log(isNaN("Yellow")); //true
console.log(isNaN("100")); //false
5.数值转换
1.Number()函数:
可用于任何数据类型
Boolean值分别转换为1和0
null转换为0
undefined转换为NaN
字符串:
只包含数值转换为10进制,包含有效的16进制格式转换为10进制,空串转换为0,其余转换为NaN。
如果是对象则先调用valueOf()函数,如果得到NaN则再调用toString()
var num1 = Number("Hello world!"); //NaN
var num3 = Number("000011"); //
2.parseInt()函数:
parseInt()函数会忽略字符串前面的空格,直到找到第一个非空字符,如果第一个字符不是数字或者负号就返回NaN
var num1 = parseInt("1234blue"); //
var num2 = parseInt(""); // NaN
var num3 = parseInt("0xA"); // 10(十六进制数)
var num4 = parseInt(22.5); //
var num5 = parseInt("070"); // 56(八进制数)
var num1 = parseInt("AF",); //
var num2 = parseInt("AF"); //NaN
五)String类型
1.String 类型用于表示由零或多个 16 位 Unicode 字符组成的字符序列,即字符串。字符串可以由双
引号(")或单引号(')表示 (无区别)。
2.ECMAScript 中的字符串是不可变的
3.转换为字符串可用toString()函数,也可用String()函数:
如果值有 toString()方法(null和undefined没有这个方法),则调用该方法(没有参数)并返回相应的结果;
如果值是 null,则返回"null";
如果值是 undefined,则返回"undefined"。
三)Object类型
ECMAScript中类型是所有他的实例的基础,即Object具有的所有方法和属性同样存在于更具体的对象中。
Object每个实例具有的方法和属性:
1)constructor:保存着创建当前对象的函数,比如,Object()
2)hasOwnProperty(propertyName):用于检查给定的属性在对象实例中(而不是实例的原型中)是否存在。其中propertyName必须以字符串的形式指定。
3)propertyIsEnumerable(propertyName):检查给定的语句能否用for-in语句来枚举。同样propertyName必须是字符串。
4)toLocalString()
5)toString()
6)valueOf()
注意:从技术角度讲, ECMA-262 中对象的行为不一定适用于 JavaScript 中的其他对象。浏览器环境中的对象,比如 BOM 和 DOM 中的对象,都属于宿主对象,因为它们是
由宿主实现提供和定义的。 ECMA-262 不负责定义宿主对象,因此宿主对象可能会也可能不会继承 Object。
三、操作符
1.布尔操作符特别的地方
1)逻辑与(&&):
如果第一个操作数是对象,则返回第二个操作数;
如果第二个操作数是对象,则只有在第一个操作数的求值结果为 true 的情况下才会返回该
对象;
如果两个操作数都是对象,则返回第二个操作数;
如果有一个操作数是 null,则返回 null;
如果有一个操作数是 NaN,则返回 NaN;
如果有一个操作数是 undefined,则返回 undefined。
2)逻辑与(||):
如果第一个操作数是对象,则返回第一个操作数;
如果第一个操作数的求值结果为 false,则返回第二个操作数;
如果两个操作数都是对象,则返回第一个操作数;
如果两个操作数都是 null,则返回 null;
如果两个操作数都是 NaN,则返回 NaN;
如果两个操作数都是 undefined,则返回 undefined。
四、语句
for in 对对象的属性进行遍历,其顺序不可预测。
label语句:
var num = 0;
outermost:
for (var i=0; i < 10; i++) {
for (var j=0; j < 10; j++) {
if (i == 5 && j == 5) {
break outermost;
}
num++;
}
}
alert(num); //
使用with语句会导致性能下降,调试困难,不建议使用。
switch语句
可以在switch()括号中使用任何类型,case中也不一定是常量,可以是变量或者表达式。
注意:switch语句在比较时使用的是全等符,因此不会发生类型转换。
五、函数
语法:
function funName() {
//doSth
}
注意:
1.调用函数时必须带上括号
2.不必指定返回值,当然也可以指定
3.return语句不带任何返回值时,函数在停止后返回undefined
4.函数参数可以是任意多个,调用函数时可以传递任意多个参数,不一定与定义时相等,
因为这个特性ECMAScript中函数不能重载,后定义的函数会覆盖先定义的函数。
之所以会出现4中的情况,ECMAScript函数在函数内部时用一个类似数组的arguments对象来表示的,可以像用数组一样使用arguments对象。
我们可以根据arguments的长度实现一个伪重载:
function doAdd() {
if(arguments.length == 1) {
alert(arguments[0] + 10);
} else if (arguments.length == 2) {
alert(arguments[0] + arguments[1]);
}
}
JavaScript基础笔记(一)基本概念的更多相关文章
- JavaScript基础笔记二
一.函数返回值1.什么是函数返回值 函数的执行结果2. 可以没有return // 没有return或者return后面为空则会返回undefined3.一个函数应该只返回一种类型的值 二.可变 ...
- JavaScript基础笔记一
一.真假判断 真的:true.非零数字.非空字符串.非空对象 假的:false.数字零.空字符串.空对象.undefined 例: if(0){ alert(1) }else{ alert(2) } ...
- JavaScript:学习笔记(2)——基本概念与数据类型
JavaScript:学习笔记(2)——基本概念与数据类型 语法 1.区分大小写.Test 和 test 是完全不同的两个变量. 2.语句最好以分号结束,也就是说不以分号结束也可以. 变量 1.JS的 ...
- JavaScript基础笔记集合(转)
JavaScript基础笔记集合 JavaScript基础笔记集合 js简介 js是脚本语言.浏览器是逐行的读取代码,而传统编程会在执行前进行编译 js存放的位置 html脚本必须放在&l ...
- JavaScript基础笔记(十)表单脚本
表单脚本 一.表单基础知识 JavaScript中表单对应的是HTMLFormElement类型,该类型继承自HTMLElement类型. 通过document.forms可以获得所有表单元素,通过数 ...
- JavaScript基础笔记(八)DOM扩展
DOM扩展 一.选择符API Selectors API是由W3C发起制定的一个标准,致力于让浏览器原生支持CSS查询. 一)querySelector() 在Document和Element类型实例 ...
- JavaScript基础笔记1220
JavaScript笔记1.JavaScript关键词2.JavaScript标识符 必须以字母,下划线(_)或美元符($)开始. 后续的字符可以是字母.数字.下划线或者美元符 (数字是不允许作为首字 ...
- javascript基础笔记学习
/** * Created by Administrator on 2016/12/26. */ /* var box; alert( typeof box); box是Undefined类型,值是u ...
- Android路径之Javascript基础-笔记
一.Javascript概述(知道) a.一种基于对象和事件驱动的脚本语言 b.作用: 给页面添加动态效果 c.历史: 原名叫做livescript.W3c组织开发的标准叫ECMAscipt. d.特 ...
随机推荐
- cf219d 基础换根法
/*树形dp换根法*/ #include<bits/stdc++.h> using namespace std; #define maxn 200005 ]; int root,n,s,t ...
- 使用Ultra Librarian将bxl文件转为OrCAD Capture CIS可识别的库文件(OLB)
操作系统:Windows 10 x64 工具1:Ultra Librarian 8.3.89 工具2:OrCAD Capture CIS 16.6-S062 (v16-6-112FF) 关于Ultra ...
- ActiveSync之HTTP
Exchange ActiveSync:HTTP协议让客户端能够同步存储在服务器上的数据. 互联网工程工作小组(IETF)要求所有互联网协议都比支持UTF-8编码.因此,ActiveSync传输所使用 ...
- 激活函数的比较,sigmoid,tanh,relu
1. 什么是激活函数 如下图,在神经元中,输入inputs通过加权.求和后,还被作用了一个函数.这个函数就是激活函数Activation Function 2. 为什么要用激活函数 如果不用激活函数, ...
- Visual Studio上编译ncnn
prerequisite 是为了在PC上熟悉ncnn的基本代码,所以用Visual Studio来配置的. 期间用过VS2013(update5)/VS2015/VS2017,反正都是基于CMake生 ...
- 基本 TCP 的回射服务器
实验一 代码:链接[01项目] 1. 先启动服务器,如图: 2. 然后启动客户端,如图: 3. 输出结果: [注意]:在服务器终止时,给父进程发送了一个SIGCHILD信号,这一点本例发生了,但是我们 ...
- python爬虫实例
import re import requests from bs4 import BeautifulSoup # 主方法 def main(): # 给请求指定一个请求头来模拟chrome浏览器 h ...
- explicit specialization 显式指定
//explicit specialization 显式指定 #include "stdafx.h" #include <iostream> #include < ...
- 标准I/O的缓冲
标准I/O实现了三种类型的用户缓冲,并为开发者提供了接口,可以控制缓冲区类型和大小. 无缓冲(Unbuffered) 不执行用户缓冲.数据直接提交给内核.因为这种无缓冲模式不支持用户缓冲(用户缓冲一般 ...
- centos的基本操作
1.ssh连接阿里云一段时间不操作自动断开打开/etc/ssh/sshd_config添加或修改: ClientAliveInterval 120ClientAliveCountMax 0 2.挂载数 ...