JavaScript 面试问题 FAQ - 2

可以使用array.unshift()插入一个元素在数组的开头。

var arr = ["1", "12", "123"];
arr.unshift('1234','12345');
alert(arr);

可以使用array.push()插入一个元素在一个数组的末尾。

var arr = ["1", "12", "123"];
arr.push('1234','12345');
alert(arr);

问题在于全局域,只更改由你自己的代码使用的对象是个好行为。
但是,当更改由其他代码使用的某些内容时,可能会破坏其他代码。

可能的问题:

  1. for..in 可能不能正常工作。
  2. 有些人可能用相同名字的函数去扩展数组。
  3. 不是在每个浏览器里面都能正常工作。

Object.prototype.toString返回这个对象的内部属性的值。每个对象有一个toString()方法,
当这个对象作为文本表示的时候被自动调用,或者当一个对象被作为数组引用的时候。
缺省的,toString()方法由来自Object的每个子对象继承。如果在自定义对象中未覆盖此方法,
则toString()将返回“[object type]”,其中type是对象类型。

var arr = ["1", "12", "123"];
if( Object.prototype.toString.call( arr ) === '[object Array]' ) {
alert( 'Array!' );
}else {
alert( 'Not an Array!' );
}

var list = [1, 2, 3, 4];
list = [];

此代码将数组列表重新设置为新的空数组。 如果在其他地方没有对原始数组列表的任何引用,这是完美的,因为这实际上创建了一个全新的空数组。

如果你需要保留原始数组,因为你有其它的引用也需要更新, 所有可以通过将其长度设置为零来清除它,而无需创建新数组。

var list = [1, 2, 3, 4];
list.length = 0;

可以。 可以将JavaScript函数分配给变量,这意味着可以将匿名JavaScript函数分配给变量。

可以使用typeOf函数来获取传递给函数的参数类型。

function getType(arg){
alert(typeof arg);
}
getType('foo'); //return string
getType(123); //return number

JavaScript的delete 操作符从对象中删除属性;
如果不再保留对同一属性的引用,则最终会自动释放。
此运算符还可以删除未使用var语句声明的变量。

var Student = {
firstName: "John",
Age: 25
}
alert(Student.firstName); // Return: "John"
delete Student.firstName;
alert(Student.firstname); // Return: undefined

Public共有变量所有者的所有成员以及可以访问所有者的其他对象都可以访问,

Private私有变量可以由所有者的所有成员(函数和变量)访问,但任何其他对象不能访问。

Static静态变量一旦类建立,它就会存在。
不管类是否有任何对象,静态变量都存在了。

JavaScript使用称为“差异继承”的继承模型。它是基于原型的编程语言使用的常见继承模型。
意思是:方法不会从父元素复制到子元素,而是子元素有一个“不可见链接”指向它们的父对象。

entries()方法返回一个带有键/值对的数组Iterator对象, 与for ... in循环中提供的顺序相同。

const Days = {
Day1: 'Sunday',
Day2: 'Monady',
Day3: 'Tuesday'
};
const entries = Object.entries(Days);
alert(entries);

function strictlyEqual(a, b) {
if (a === b) return true;
}

我们检查a和b是否完全相等(意思是, "精确引用相同的东西").

blur()方法从一个元素移除焦点。

document.getElementById('myField').onblur();

它对文档中的非活动元素没有影响。 如果对活动元素使用blur方法,则它将失去活动状态并触发onblur事件。

NaN是一个特殊值,转换数字时,如果类型转换失败,而不抛出异常时的返回值,

window.document.body.style.cursor = "wait";

ViewState指定于会话中的页面。
SessionState指定到Web应用程序中的所有页面上访问的用户特定数据。

严格模式是ECMAScript 5中的一项新功能,允许放置程序, 或功能到“严格”的操作环境中。
这种严格的上下文环境阻止了某些不规范操作,会引发更多异常。
只需在代码的顶部添加“use strict”,在进行其他任何事情之前。

'use strict';
var str = "Hello World";
document.write(str);

JavaScript是一种松散型语言。每当运算符或语句期望特定数据类型时, 它会自动将数据转换为该类型。

例子

var numStr = '5';
var x = numStr*1;
var y = +numStr;
typeof(numStr); //"string"
typeof(x); //"number"
typeof(y); //"number"

在Javascript中,不能保证精确的分数运算。 而且,这取决于你正在做什么样的计算.

  1. 如果需要结果准确加起来, 特别是当计算金额时:需要使用专门的小数数据类型。
  2. 如果只是不想看到额外的小数位: 在显示结果时,只需将结果格式化为固定的小数位数。
  3. 如果没有可用的小数数据类型,则可以选择使用整数,例如: 完全以美分进行货币计算。 但需要更多的工作,并有一些缺点。

电脑可能会死锁,因为死循环使得浏览器不稳定。

unshift()方法增加一个新元素在数组的开头,并返回新数组的长度。

var days = ["Sunday", "Monday"];
document.write(days);
days.unshift("Tuesday","Wednesday");
document.write(days);
原文链接

JavaScript 介绍

JavaScript 基础

JavaScript: 文档对象模型

JavaScript 编程