JS学习笔记

JS是脚本语言,是一种轻量级的编程语言,可以插入HTML页面的编程代码,插入HTML页面之后,可由现在所有的浏览器执行。

JS的引入方式

  script标签内写代码,这是最常见的方式,但是在生产中一般用引入额外的JS文件,这样会使得代码清晰,容易阅读。

JS的变量声明

  1.JS的变量名可以使用_,数字,字母,$组成,不能以数字开头

  2.声明变量使用var 变量名的格式,但是在ES6中用let来声明变量,用法和var类似,但是所声明的变量只在let命令所在的代码块内有效,比如说for循环中就使用,es6新增了const来声明常量,一旦声明,就不能改变值

JS的数据类型

  js有动态类型:

var x  // 这里的x是undefined 
var x = 1  // 这里X是数字
var x = "alex" //这里x是字符串

1. 数值类型----Number

  js不区分整型和浮点型,只有一种数字类型

// 下面都是数字类型    
var a = 12.34;
var b = 20;
var c = 123e5;  // 12300000
var d = 123e-5;  // 0.00123

ps:NaN表示不是一个数字(Not a Number)

//NaN表示不是一个数字,但是NaN的类型是Number类型

parseInt("123")  // 返回123
parseInt("ABC")  // 返回NaN,NaN属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。
parseFloat("123.456")  // 返回123.456

2。字符串类型String

  字符串类型可以进行拼接,和python中一样,使用“+”,在es6中,引入了模板字符串,是增强版的字符串,和python中字符串的格式化一样,用反引号标识`内容`:

// 普通字符串
`这是普通字符串!`
// 多行文本
`这是多行的
文本`
// 字符串中嵌入变量
var name = "abc", time = "today";
`Hello ${name}, how are you ${time}?`
模板字符串的举例

注意:如果模板字符串中需要使用反引号,则在前面要用反斜杠转义

3.布尔值(Boolean)

  区别于python,true和false都是小写,""(空字符串)、0、null、undefined、NaN都是false。

4.null和undefined

  null表示值是空,一般在需要指定或清空一个变量时才会使用,如 name=null;

  undefined表示当声明一个变量但未初始化时,该变量的默认值是undefined。还有就是函数无明确的返回值时,返回的也是undefined。

  null表示变量的值是空,undefined则表示只声明了变量,但还没有赋值。

5.对象(Object)

  在js中,所有事物都是对象,另外js允许自定义对象,js提供多个内建对象,比如String,Date,Array,对象是电邮属性和方法的特殊数据类型

6.数组

  和列表类似,用单独的变量名来存储一系列的值。

函数函数函数+++++++++++++++  

  在js中函数的定义用function用function,举例:

function func(){
     console.log("hi");  //要有分号;      
}
function func2(a,b){ // 参数
     console.log(a,b)    
}
//函数的调用就是函数名+()

匿名函数:

  

var sum= function(a,b){
          return a+b;
}
// 匿名函数是var一个变量名 + function(){}

立即执行函数:

function(a,b){
      return a+b;
})(1,2);
//函数体内用括号写入,然后直接调用,就是立即执行函数

箭头函数:

  =>

  es6中允许使用箭头函数,用箭头来定义函数

 

var f = v => v;
// 等同于
var f = function(v){
 return v;
}

// 如果箭头函数不需要参数或需要多个参数,就是用圆括号代表参数部分:

var f = () => 5;
// 等同于
var f = function(){return 5};

var sum = (num1, num2) => num1 + num2;
// 等同于
var sum = function(num1, num2){
  return num1 + num2;
}

函数中的arguments 

其实Javascript并没有重载函数的功能,但是Arguments对象能够模拟重载。Javascrip中每个函数都会有一个Arguments对象实例arguments,它引用着函数的实参,可以用数组下标的方式"[]"引用arguments的元素。arguments.length为函数实参个数,arguments.callee引用函数自身。arguments对象和Function是分不开的。因为arguments这个对象不能显式创建,arguments对象只有函数开始时才可用。

局部变量

在JavaScript函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它(该变量的作用域是函数内部)。只要函数运行完毕,本地变量就会被删除。

全局变量:

在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。

变量生存周期:

JavaScript变量的生命期从它们被声明的时间开始。

局部变量会在函数运行以后被删除。

全局变量会在页面关闭后被删除。

作用域

首先在函数内部查找变量,找不到则到外层函数查找,逐步找到最外层。

闭包

  闭包就是一个函数引用另外一个函数的变量,因为变量被引用着所以不会被回收,因此可以用来封装一个私有变量。这是优点也是缺点,不必要的闭包只会徒增内存消耗!另外使用闭包也要注意变量的值是否符合你的要求,因为他就像一个静态私有变量一样

原文地址:https://www.cnblogs.com/juteng/p/9266422.html