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.特 ...
随机推荐
- CentOS下将Python的版本升级为3.x
本文主要介绍在Linux(CentOS)下将Python的版本升级为3.x的方法 众所周知,在2020年python官方将不再支持2.7版本的python,所以使用3.x版本的python是必要的,但 ...
- git 小乌龟安装教程
一.windows系统安装git 首先下载git for windows客户端http://msysgit.github.io/ 安装过程没什么特别的,不停next就ok了 图太多就不继续了~ ...
- Java+selenium之WebDriver页面元素的操作(三)
1. 输入框(text field or textarea) WebElement we = driver.findElement(By.id("id")); //将输入框清空 w ...
- JAVA之复制数组
//复制数组 //Arrays.copyOf(arr, 5) //arr:要复制的对象,5为新数组的长度 import java.util.Arrays; public class Cope { pu ...
- Ajax 异步局部刷新
Ajax 异步局部刷新 AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页 ...
- Leetcode刷题第001天
一.合并两个有序链表 [题目]206. 反转链表 /** * Definition for singly-linked list. * struct ListNode { * int val; * L ...
- python爬虫实例
import re import requests from bs4 import BeautifulSoup # 主方法 def main(): # 给请求指定一个请求头来模拟chrome浏览器 h ...
- sed 详解【转】
原文地址:http://www.cnblogs.com/sparkdev/archive/2017/07/10/7138073.html 基本命令格式 sed [常用选项] 命令文本 输入 常用选项 ...
- 【C#】使用OWIN创建Web API
OWIN的介绍 OWIN 的全称是 "Open Web Interface for .NET", OWIN 在 .NET Web 服务器和 .NET Web 应用之间定义了一套标准 ...
- C语言之字符、整数、数组、字符串笔记
菜单导航 1.变量在计算中的内存分配 2.字符char类型操作 3.整型数据类型操作 4.数组操作和元素地址分配分析 5.数组越界造成的访问不属于自己的内存空间现象 6.引用数据类型和基本数据类型,形 ...