码迷,mamicode.com
首页 > 编程语言 > 详细

Java基础学习心得03

时间:2018-06-17 16:54:13      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:java   undefined   字符串   join   ons   定义   字符   str   fine   

函数

  • 函数的name属性返回函数的名字;
  • 利用toString,可以变相实现多行字符串:
var multiline = function (fn) {
  var arr = fn.toString().split(‘\n’);
  return arr.slice(1, arr.length - 1).join(‘\n’);
};

function f() {/*
  这是一个
  多行注释
*/}

multiline(f);
// “ 这是一个
//   多行注释”
  • 注意,对于var命令来说,局部变量只能在函数内部声明,在其他区块中声明,一律都是全局变量;
  • 函数执行时所在的作用域,是定义时的作用域,而不是调用时所在的作用域:
var a = 1;
var x = function () {
  console.log(a);
};

function f() {
  var a = 2;
  x();
}

f() // 1

//很容易犯错的一点是,如果函数A调用函数B,却没考虑到函数B不会引用函数A的内部变量。
var B = function () {
  console.log(a);
};

function A(f) {
  var a = 2;
  f();
}

A(B)
// ReferenceError: a is not defined
  • 运行时无论提供多少个参数(或者不提供参数),JavaScript 都不会报错。省略的参数的值就变为undefined;
  • 函数的length属性与实际传入的参数个数无关,只反映函数预期传入的参数个数;
  • return不能单独使用,必须在函数中使用;
  • eval最常见的场合是解析 JSON 数据的字符串,不过正确的做法应该是使用原生的JSON.parse方法;

严格模式与eval配合

  1. 外部作用域的代码无法取得eval内定义的变量:
(function f() {
  ‘use strict’;
  eval(‘var foo = 123’);
  console.log(foo);  // ReferenceError: foo is not defined
})()
  1. 但是eval可以读写外部作用域的变量的值:
(function f() {
  ‘use strict’;
  var foo = 1;
  eval(‘foo = 2’);
  console.log(foo);  // 2
})()

  • 为了保证eval的别名不影响代码优化,JavaScript 的标准规定,凡是使用别名执行evaleval内部一律是全局作用域:
//下面这些形式都是eval的别名调用,作用域都是全局作用域。
eval.call(null, ‘…’)
window.eval(‘…’)
(1, eval)(‘…’)
(eval, eval)(‘…’)

Java基础学习心得03

标签:java   undefined   字符串   join   ons   定义   字符   str   fine   

原文地址:https://www.cnblogs.com/endymion/p/9192997.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!