基本概念

一、语法

一)区分大小写

二)标识符

书写规则同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基础笔记(一)基本概念的更多相关文章

  1. JavaScript基础笔记二

    一.函数返回值1.什么是函数返回值    函数的执行结果2. 可以没有return // 没有return或者return后面为空则会返回undefined3.一个函数应该只返回一种类型的值 二.可变 ...

  2. JavaScript基础笔记一

    一.真假判断 真的:true.非零数字.非空字符串.非空对象 假的:false.数字零.空字符串.空对象.undefined 例: if(0){ alert(1) }else{ alert(2) } ...

  3. JavaScript:学习笔记(2)——基本概念与数据类型

    JavaScript:学习笔记(2)——基本概念与数据类型 语法 1.区分大小写.Test 和 test 是完全不同的两个变量. 2.语句最好以分号结束,也就是说不以分号结束也可以. 变量 1.JS的 ...

  4. JavaScript基础笔记集合(转)

    JavaScript基础笔记集合   JavaScript基础笔记集合   js简介 js是脚本语言.浏览器是逐行的读取代码,而传统编程会在执行前进行编译   js存放的位置 html脚本必须放在&l ...

  5. JavaScript基础笔记(十)表单脚本

    表单脚本 一.表单基础知识 JavaScript中表单对应的是HTMLFormElement类型,该类型继承自HTMLElement类型. 通过document.forms可以获得所有表单元素,通过数 ...

  6. JavaScript基础笔记(八)DOM扩展

    DOM扩展 一.选择符API Selectors API是由W3C发起制定的一个标准,致力于让浏览器原生支持CSS查询. 一)querySelector() 在Document和Element类型实例 ...

  7. JavaScript基础笔记1220

    JavaScript笔记1.JavaScript关键词2.JavaScript标识符 必须以字母,下划线(_)或美元符($)开始. 后续的字符可以是字母.数字.下划线或者美元符 (数字是不允许作为首字 ...

  8. javascript基础笔记学习

    /** * Created by Administrator on 2016/12/26. */ /* var box; alert( typeof box); box是Undefined类型,值是u ...

  9. Android路径之Javascript基础-笔记

    一.Javascript概述(知道) a.一种基于对象和事件驱动的脚本语言 b.作用: 给页面添加动态效果 c.历史: 原名叫做livescript.W3c组织开发的标准叫ECMAscipt. d.特 ...

随机推荐

  1. logical_backup: expdp/impdp

    Table of Contents 1. 注意事项 2. 前期准备 3. 常用参数及示例 4. 常用语句示例 5. 交互式命令 6. 技巧 6.1. 不生成文件直接导入目标数据库 6.2. 通过she ...

  2. js 压缩上传的图片方法(默认上传的是file文件)

    //压缩图片方法 function compressImg(file,callback){ var src; var fileSize = parseFloat(parseInt(file['size ...

  3. iptables命令

    iptables命令是Linux上常用的防火墙软件,是netfilter项目的一部分.可以直接配置,也可以通过许多前端和图形界面配置. 语法 iptables(选项)(参数) 选项 -t<表&g ...

  4. WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable Exception in thread "main" java.io.IOException: No FileSystem for sc F

    1.执行脚本程序报如下所示的错误: [hadoop@slaver1 script_hadoop]$ hadoop jar web_click_mr_hive.jar com.bie.hive.mr.C ...

  5. [转] Lodash常用API笔记

    原生用法 直接使用的API _.reject 根据条件去除某个元素. var foo = [ {id: 0, name: "aaa", age: 33}, {id: 1, name ...

  6. bzoj4773: 负环

    题解: 网上还有一种spfa+深度限制的算法 https://www.cnblogs.com/BearChild/p/6624302.html 是不加队列优化的spfa,我觉得复杂度上限是bellma ...

  7. python全栈开发day76-博客主页

    一.昨日内容 1. 注册 1. form组件 - 基于正则的校验规则(手机号和邮箱) - 基于全局钩子判断两次密码是否一致 2. $.each(遍历的对象, function(){ this --&g ...

  8. Dig

    在 UNIX 和 Linux 下,建议大家使用 dig 命令来代替 nslookup. dig 命令的功能比 nslookup 强大很多,不像 nslookkup 还得 set 来 set 去的,怪麻 ...

  9. day 54 jQuery, part-1

    上节内容回顾: 1. 前情回顾 1. DOM对象和BOM对象 1. BOM 对象 --> window location location.href location.href="ht ...

  10. day28 面向对象:反射,内置函数,类的内置方法

    面向对象进阶博客地址链接: http://www.cnblogs.com/Eva-J/articles/7351812.html 复习昨日内容: # 包 # 开发规范 # # hashlib # 登录 ...