JavaScrip学习笔记

本文介绍了JavaScript的基础,包括其历史、作用域、一级函数、函数声明和表达式。讲解了变量提升、闭包、匿名函数、立即执行函数以及函数参数。此外,还探讨了JavaScript中的对象和类型系统,强调了函数作为一等公民的角色。最后,通过示例展示了如何判断值为真还是假。
摘要由CSDN通过智能技术生成

概述

  • JavaScript(ECMAScript)运行在浏览器之上
  • 核心javascript语音需要结合浏览器对象模型(BOM)和文档对象模型(DOM)来理解
  • 浏览器对象模型包含window对象及其子对象:navigator,history,screen,location,document.document对象是文档对象模型的根节点,是页面内容结构的一个树状表示。

JavaScript的历史

  • 语法大多来自java,同时继承了awk和perl的一些语法,其基于原型的对象模型间接受到self的影响
  • perl的箴言,不止用一种方法去做一件事影响了JavaScript,如创建和初始化数组的不同方式
  • JavaScript与scheme语言相像的主要特征是它是一门函数式编程语言,既支持函数式编程又支持函数作为以及对象

作用域

全局,eval和函数 注意JavaScript的变量提升

一级函数

可以赋值给一个变量,作为参数传递给另一个函数,作为函数的返回值,或者包含在其他的数据结构中;函数是JavaScript中的基本单元,是名副其实的一级对象。

var happy = function(){
    return ':)';
}
var said = function(){
    return ':(';
}
var mood = function(aFunction){
    return aFunction    
}
list=[happy,said]

response = {fine:happy,underTheWeather:sad}

var iAmFeeling = mood(happy)
console.log(iAmFeeling)

var iAmFeeling = mood(sad)
console.log(iAmFeeling)

console.log(response.fine())
//匿名函数
console.log(list[0]())
console.log(function(){ return ";)"; }())

函数声明和表达式

  1. function操作符
  2. 可省略的函数名
  3. 一对小括号
  4. 一对大括号

最小化函数声明 function(){}
类C风格声明 function myFunctionName(){}
匿名函数 var x = function(){}
具名函数 var x = function y(){}

函数可以关联一个对象,这时称之为方法。对象被隐式的传递给其所调用的方法,方法可以访问和操作对象里的数据,通过this关键字引用对象

var obj = {}
obj.myVar = 'data associated with an object'
obj.myFunc = function(){ return 'I can access '+this.myVar;} //this:引用该对象
console.log(obj.myFunc())

可以在函数中定义其他函数,内部的函数可以访问外部函数的变量,一个函数返回一个内部函数时,就形成了闭包

function outer(){
    var val = "I am in outer space";
    
    function inner(){
        return val;
    }
    return inner;
}
var alien = outer();
//返回的对象既包含函数本身,也包含创建函数时的环境。
console.log(alien())

立即执行函数将代码限定在函数的局部作用域内,避免了污染作用域

(function(){console.log('in an immediate function')}())

函调调用

  1. 函数
  2. 方法
  3. 构造函数
  4. 使用call()或apply()

不同的方式会影响this关键字引用的对象。第一种方式(函数),在非严格模式下,this指全局上下文;在严格模式下,返回undefined或者在执行上下文中得到的值。接下来的两种方式(方法和构造函数)是面向对象编程所特有的,其中方法调用是调用和对象关联的函数,而调用构造函数会创建一个新对象。和以上三种方式不同,call()和apply()允许在调用一个函数时, 显示指定上下文

var that = this
this随上下文而变,所以将它赋给that,以访问this原来的变量。

函数参数

函数通过签名中声明的命名参数接收参数。有一个特殊的变量arguments,它保存了所有传入函数的参数,不管是有名的还是没名的。

function add(){
    var sum = 0;
    for(i=0;i<arguments.length;i++){
        sum+=arguments[i];
    }
    return sum;
}
console.log(add(1,2,3));
console.log(add.apply(null,[2,3,4]));
console.log(add.call(null,3,4,5));

对象

在JavaScript中,对象只是一组属性的集合。JavaScript中的对象也有继承,可以在JavaScript中创建类。

在JavaScript代码被放到web服务器上,按需加载可以提升效率。可使用由RequireJS等类库支持的AMD API来提升性能。该API按模块定义JavaScript代码,让模块和其依赖能异步加载。

JavaScript中值是true还是false

  //结果都是false
  console.log(false?'true':'false');
  console.log(0?'true':'false');
  console.log(NaN?'true':'false');
  console.log(''?'true':'false');
  console.log(null?'true':'false');
  console.log(undefined?'true':'false');
  //结果都是true
  console.log('0'?'true':'false');
  console.log('false'?'true':'false');
  console.log([]?'true':'false');
  console.log({}?'true':'false');
类型结果例子
Undefined“undefined”typeof undefined
Null“object”type null
Boolean“boolean”type true
Number“number”type 123
String“string”type ‘hello’
Function object“function”type function()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NewTech精选

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值