js程序设计01——基本概念

本文为js高级程序设计学习笔记,笔记中不乏本人学习js的一些心得demo,喜欢的朋友可以直接参考原书“javascript高级程序设计”,写本笔记的目的是对js中容易出错、不易理解的地方作个笔记,以免后期继续踩坑。

1、语法

  • 区分大小写:比如typeof用于测试数据类型,不同于typeOf,一个func完全可以定义为typeOf
  • 标识符:首字符必须是字母、下划线或$,之后可以是数字、字母、下划线或$;标识符不能使用系统关键字及保留字,比如var、true、false、null、let等
  • 严格模式:

严格模式是ECMAScript 5中引入的概念,是为js定义解析以及执行模型的一种机制,也是为了兼容旧版本的ECMAScript版本而引入的,就是一种编译指示,可以确定ECMAScript 3版本编译运行时的一些不确定行为。使用"use strict",方法如下:

function say(){
  "use strict";
  console.log("hello strict mode");
}

say();

2、变量

所有未经初始化的变量始终为undefined,不论变量类型:

function say(){
  var message = "hello message";
}
say();
alert(message);  //message未定义为undefined

但是如果省略了var关键字,则message自动上升为全局变量,不会报错:

function say(){
  message = "hello message";
}
say();
console.log(message);

结果:

变量声明初始化允许同时进行,比如:

var m1 = "1",m2 = "2",m3 = [1,2,3];
console.log(m1);
console.log(m2);
console.log(m3);

3、数据类型

ECMAScript 5定义js有5中基本类型+1种复杂数据类型(引用类型),基本类型:Undefined、Null、Boolean、Number、String,复杂类型:Object

其中typeof操作符是用来测试数据类型的,typeof的返回值可以是如下几种:

“undefined”——唯一的Undefined类型值,表示“未定义”;
“boolean”——对于Boolean的true or false返回;
“string”——字符串返回;
“number”——数值类型值返回;
“object”——Object类型或者Null类型均返回;
“function”——函数返回;

下面是简单测试:

var m1 = "message",m2 = true,m3 = 98,m4,m5 = {},m6 = null,m7 = function(){};

console.log(typeof m1);
console.log(typeof m2);
console.log(typeof m3);
console.log(typeof m4);
console.log(typeof m5);
console.log(typeof m6);
console.log(typeof m7);

Boolean类型的字面值true和false是区分大小写的,所有数据类型均可通过Boolean()转换函数转换为Boolean类型,对于Number类型,任何非零(包括无穷大)转换为true,0和NaN转换为false;对于Object类型来说,转换为true,null转换为false

关于NaN:

NaN(Not a Number)即非数值,是一个特殊数值,NaN有2个特点:

  • 任何涉及NaN的操作都会返回NaN
  • NaN与任何值都不相等,包括NaN本身

关于NaN的测试如下:

console.log(NaN / 10);    //NaN
console.log(NaN / 0);      //NaN
console.log(NaN == NaN);    //false
console.log(isNaN(NaN));    //true
console.log(isNaN(""));    //false
console.log(isNaN(12));    //false
console.log(isNaN("awd"));    //true
console.log(isNaN("awd12"));    //true
console.log(isNaN("12awd"));    //true
console.log(isNaN(null));    //false
console.log(isNaN({}));      //true  
console.log(isNaN({valueOf:function(){      //false,如果是对象则调用其valueOf方法,查看返回是否匹配NaN
  return -1;
}}));
console.log(isNaN({valueOf:function(){      //true
  return "awdw";
}}));

关于Number()函数:

Number()函数用于将一个非数值转换为数值类型,Boolean直接返回1或0,null返回0,undefined返回NaN,如果是字符串:空字符串返回0,非空返回去除前导0的字符值,比如"011"返回11,如果非数值字符串返回NaN,比如"this is test"返回NaN;如果是对象,则调用对象的valueOf方法返回。

关于Object类型:

创建:

var o = new Object();

Object的每个实例都有如下属性和方法:

  • constructor:保存着用于创建当前对象的函数
  • isPrototypeOf(object):用于检查传入的对象是否是传入对象的原型
  • hasOwnProperty(propertyName):用于检查给定的属性是否在当前对象实例中
  • propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用for-in 语句枚举
  • toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应
  • toString():返回对象的字符串表示
  • valueOf():返回对象的字符串、数值或布尔值表示

4、函数类型

ECMAScript的函数支持不定参数,实际上通过arguments对象即可直接获取请求的参数,函数定义时可以不用指定参数,使用时也可以传入任意数量参数:

function say(){
  for(var i=0,len=arguments.length;i<len;i++){
    console.log(arguments[i]);
  }
}

say(12,"343","1231");
function say2(name,age){
  console.log(name);
  console.log(name == arguments[0]);
  console.log(age);
  console.log(age == arguments[1]);
}

say2("admin",23);

ECMAScript的函数不支持重载,如果定义了2个同名函数,则第二个会覆盖第一个函数:

function say(){
  console.log(1111);
}

say();      //2222

function say(){
  console.log(2222);      
}

say();      //2222

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏WindCoder

JavaScript比较字符串大小

如果 stringObject 小于 target,则 localeCompare() 返回小于 0 的数。

381
来自专栏ccylovehs

JavaScript基础回顾一(类型、值和变量)

没有答对也不要灰心,本文会巩固你的基础知识,后续会有系列的基础回顾知识,以飨诸君!

492
来自专栏jojo的技术小屋

原 三、基本概念

作者:汪娇娇 时间:2017年11月4日 一、语法 1、区分大小写 2、标识符 指变量、函数、属性的名字,采用驼峰大小写格式。 3、注释 单行:// 多行:/*...

2545
来自专栏Micro_awake web

javascript(二):数据类型&数值

第一部分:数据类型 javascript数据类型通常来说是6种(ES6新增第七种Symbol类型) number:数值 string:字符串 boolean:布...

1825
来自专栏前端架构

js随机产生和为s的整数组

随机生成和为S的N个正整数有很多种解法。下面讲解一种比较高效且比较有趣味性的解法——投影法。

612
来自专栏mukekeheart的iOS之旅

《JavaScript高级程序设计》学习笔记(1)

欢迎关注本人的微信公众号“前端小填填”,专注前端技术的基础和项目开发的学习。 首先,我将从《JavaScript高级程序设计》这本JavaScript学习者必看...

2614
来自专栏三木的博客

Javascript中的基本数据类型

Undefined 在var或者let中声明了变量但没有赋值时,这个变量的值就是undefined. 使用typeof关键字检测未声明变量的类型为undefin...

1775
来自专栏web

JS中isPrototypeOf 和hasOwnProperty 的区别

1094
来自专栏LanceToBigData

JavaScript之JS的数据类型

JavaScript一共有6中数据类型: 基本数据类型(5):字符串(String)、数字(Number)、布尔(Boolean)、数组(Array)、空(N...

683
来自专栏前端学习心得

JavaScript基础(一)----强制转换与自动转换

JavaScript是一门动态语言,所谓的动态语言可以暂时理解为在语言中的一切内容都是不确定的。比如一个变量,这一时刻是个整型,下一时刻可能会变成字符串了。虽然...

802

扫码关注云+社区